perm filename HOW.ALS[UP,DOC]5 blob sn#560455 filedate 1981-01-31 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00103 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00009 00002	   	HOW	A condensed reference file of useful system programs.
C00014 00003	Supplementary Information
C00016 00004		HELP	An on-line program called by typing HELP.
C00023 00005		PRUNE	PRUNE.DAT    One line descriptions of files
C00027 00006	Equipment
C00030 00007	Basic system commands
C00039 00008		Teletype Commands
C00040 00009		DMINT and DMUSE 	Info for beginners on DataMedia
C00043 00010	Useful system features
C00044 00011		FINGER	Locates people or tells when they last ran.  Jan.'78
C00051 00012		RSL	Service Level Reservations
C00052 00013		COOL	Summarizes temperature & computer uptime.  Jan. 1978
C00056 00014		SOB	Son of Bureaucracy (computer time accounting) Jan. 1978
C00060 00015		BUREAU	Computer time accounting (old style)	Oct. 1975
C00067 00016		LESCAL	Calendar-maker.		Dec. 1974
C00068 00017		FREEFO	Text macro processor		March 1973
C00069 00018		KWIC	Keyword in context program	Dec. 1973
C00076 00019		XGPTYP	Converts XGP file to text form		Dec. 1975
C00077 00020	Editors
C00078 00021	    Text Editors
C00080 00022		E	The page and display oriented basic editor.
C00084 00023		SOS	Line numbering basic editor for teletype usage.
C00086 00024	    Graphic Editors
C00090 00025		GEOMED	A graphics editor.
C00093 00026	    Font Editors
C00100 00027	Document Compilers
C00101 00028		POX	Formatting document compiler for use with the XGP.
C00105 00029		PUB	Publication compiler to achieve book format.
C00107 00030		PUBMAC	Macros for generation of tables of contents etc.
C00109 00031		TEX	A system for Technical Editing by Donald E. Knuth
C00112 00032		MAXTEX	TEX preloaded version and macros.
C00116 00033	Built-in Editors
C00117 00034		ILISP
C00118 00035		AID
C00119 00036		BASIC
C00120 00037	Programming Languages
C00126 00038	    Machine Languages
C00127 00039		FAIL	A fast one-pass assembly language
C00131 00040		MACRO	An older 2-pass assemblier with good macro facilities
C00132 00041		MIDAS	MIT's assembler for the PDP-10
C00134 00042		PALX	PDP-11 assembler
C00135 00043		MIX
C00136 00044	    Algebraic Languages
C00137 00045		SAIL	The standard AI lab. ALGOL based languague
C00138 00046	        PASCAL  An ALGOL-60 based languague developed by N. Wirth.
C00141 00047		BASIC
C00142 00048		AID
C00144 00049		WISE
C00145 00050		FORTRAN 40
C00146 00051	    LISP languages List Processing Languages
C00148 00052		MACLISP Standard AI Lab Lisp programming language.
C00155 00053		LISP 1.6 Stanford AI Lab Lisp 1.6 System
C00156 00054		MLISP Meta-notation LISP programming language
C00158 00055		MLISP2 LISP derivative programming language.
C00160 00056		ILISP UC Irvine Lisp
C00161 00057		RLISP REDUCE Lisp
C00168 00058	Programming aids
C00169 00059		@ ATSIGN prepares a (compiler-like) cross-reference listing
C00171 00060	ARPAnet programs
C00173 00061		HOST and HOSTAB		Examine the ARPAnet host table
C00176 00062		TELNET	Communicate with an ARPAnet host
C00178 00063		SUPDUP	Communicate with an ARPAnet host via SUPDUP display protocol
C00180 00064		IMSSS	Communicate with IMSSS
C00183 00065		FTP	File Transfer Program to transfer files over ARPAnet
C00185 00066		HOSTAT	Report status of hosts on the ARPAnet
C00186 00067		IMPSTA	Report status of ARPAnet connections at SAIL
C00188 00068		TALK	Link to users at other hosts on the ARPAnet
C00190 00069		WHO	Report who is logged in on another host on ARPAnet
C00191 00070		TIMES	Report on times from the network time servers
C00192 00071		DFTP and DCSTAT		Hack the CCA Datacomputer
C00194 00072		DDHACK	To control DD displays from remote ARPA hosts
C00197 00073	Debugging Aids
C00199 00074		RAID	An interactive debugging aid (also FRAID).
C00205 00075	Conversion Programs
C00209 00076	File duplicating programs
C00212 00077		COPY
C00223 00078		SPOOL, XSPOOL, QSPOOL and UNSPOOL, [LIST] and [XSPL]
C00233 00079		TENDMP
C00234 00080		6TO10
C00235 00081	Communication Programs
C00238 00082		MAIL
C00239 00083		FTP	EFTP
C00240 00084	Demonstration programs
C00246 00085		Chess
C00247 00086		Checkers
C00248 00087		Go
C00249 00088		KALAH	Modern version of WARI, an ancient  African game
C00254 00089	Recreation Programs
C00255 00090		ADVENTURE
C00256 00091		(EYEWASH)
C00257 00092		PARRY	A model paranoid			Sept. 1977
C00258 00093		CRYPTO	A bookkeeping program for use in solving puzzles.
C00259 00094	USEFUL SUBROUTINES
C00260 00095		OUTDPY	SAIL callable subroutine to display text
C00264 00096	UNSORTED
C00265 00097		BUZZ	Terminal test					1967
C00266 00098		DOCTOR	Eliza						1968
C00267 00099		P2P	Paper tape puncher			1973?
C00268 00100		A2E	ASCII to EBCDIC code conversion			Jan. 1973
C00269 00101		SHUFFL	Operating System test program
C00270 00102		CHACK & AMOEBA	III display hacks			1969
C00271 00103		BILLBD	Billboard printer				Nov. 1966
C00272 ENDMK
C⊗;
   	HOW	A condensed reference file of useful system programs.

Currently maintained by ALS

Supplementary information available:
    HELP <topic><cr>    Monitor command to find help on given topic.
    READ <topic><cr>	Monitor command to read a documentation file
			file on given topic, using the display editor E.
    PRUNE.DAT[3,2]      File containing one-line descriptions of some help
			topics.
    MONCOM.BH[S,DOC]    Online version of the latest edition of the
			Monitor Command Manual (SAILON-54.6, August 1978),
			describes all monitor commands and the programs
			they run.  The printed manual is available from
			publication services.
    MONCOM.UPD[S,DOC]   Updates to the Monitor Command Manual.
    UUO.ME[S,DOC]       Online version of the latest edition of the UUO
			Manual (3rd edition, SAILON-55.5, November 1977).
    UUO.UPD[S,DOC]      Updates to the UUO Manual, includes all new UUOs.


To use:  Type READ HOW<cr> then αFtopicαP (in E) ("α" means CONTROL) where
	 "topic" is the name of the program or topic you wish to enquire
	 about.  You can look at the HOW directory on page 1 for a list of
	 the possible programs and topics.

To exit: You will be in E so you may switch to another file, or exit with αE.

This file describes some of the many useful programs that are available on
the system and gives a few basic commands for using these programs.

The entries each occupy a separate page of fewer than 100 lines.  The
first line of each page is arranged so that the directory of HOW,
maintained automatically by E, forms a useful index and so that a ⊗FNAME⊗P
command may be used to locate any desired entry.

The entries should conform to the following format:

1) A first line, indented by a single TAB, to contain the program name,  a
second TAB and a very short  description (total line length not to  exceed
68 characters).  DO NOT mention names of other programs on this line!  If
there is room, put the last revision date on this line, otherwise put this
information with the name of the maintainer, below.

2) The name of the author or the person currently maintaining the program.

3) References to supplementary information, on-line files, manual etc..

4) Calling and exiting commands

5) The explanatory text itself.

If you wrote, maintain, or even know about some program or facility that
should be described in this file, please prepare a one page draft and mail
it to ALS.  It might be wise to advise ALS of your intentions to avoid
duplication of effort.

The author of each page has primary responsibility for maintaining the
information.  Please report all errors or omissions to him and/or to ALS.

If you find an error or omission and it is not corrected in a reasonable
period of time, please add a signed addendum to the original page.

Please do not make other corrections without informing ALS.
Supplementary Information

			    The New HOW File.

We are starting to  put togather a  new document aid  that will reside  on
UP,DOC, accessable by typing  READ HOW.  The  aim is to  have one page  in
this document on every  generally useful and  generally available file  on
the AI computer.  The start of this file is being kept on 1,ALS until  its
format has been finalized and until  there are enought completed pages  to
make it of use to others.

Contributers are asked to read page 2  of HOW[1,ALS] to get the flavor  of
what we are attempting to do and for our first stab as to desired  format.
Also look at the directory on page 1 and at some of the other pages to get
a feel for what is desired.

	HELP	An on-line program called by typing HELP.

    The Help  program provides  minimal on-line  documentation for  system
programs and facilities.

    To use type HELP name<carriage return>  where name is the name of  the
program or facility that you are inquiring about.

    Type HELP with no file name for further information.

HELP.BH[UP,DOC] contains the following:

The HELP program is intended to provide short, minimal documentation
for system programs and facilities.  For the most part, such help
is provided in the form of short text files which are typed by the
HELP program,, but the program is also capable of running other
programs and of executing monitor commands a la DO.

The command "HELP name" looks for a file on the [3,2] area with
filename NAME and an extension matching one of those listed below.
The first (should be only!) such file found in the UFD is processed
in accordance with its extension:

<null>	type as text
TXT	type as text
DMP	run via SWAP UUO
CMD	type into input buffer to be executed as commands
DPY	like CMD, but user must be at a DD or III
LNK	read ASCII name from file and use as new HELP argument

In reading ASCII files (all but DMP), TV/E directories and SOS line
numbers are ignored.  The user must be logged in to use a CMD or DPY
HELPer.  Also, since those typically have side effects like writing
files, each contains a warning message which is typed out before
the commands are executed; the user must confirm by typing Y that he
really wants the HELPer executed.  The format of a CMD or DPY helper
is <warning>⊗<commands>, e.g.:
	This HELPer produces a such-and-such listing on the XGP.
	Please type Y to confirm: ⊗XSPOOL SUCH-AND-SUCH
If the first character of the HELPer is ⊗, it is executed without
waiting for confirmation.

Note that DMP files can be executed not-logged-in; writers of DMP
files on [3,2] should bear that in mind when writing their programs.

In scanning a LNK file, letters and digits are accumulated up to a
non-alphameric or the sixth character.  The resulting name is then
treated as if it had been typed by the user.  Thus two HELP arguments
can refer to the same text file and there is only one copy to update
if the program being documented changes.

HELP files should mention filenames of other documentation when
available.  Remember that the user may not know the syntax of the
TYPE command, so instead of
	For more information: TYPE MUMBLE.FOO[UP,DOC].
you should use an unambiguous notation like
	For more information, type "TYPE MUMBLE.FOO[UP,DOC]".
(Remember also that the user may be at an uppercase-only, standard ASCII
terminal!)  If you write a DMP file with effects other than typing something
on the user's terminal, it is a good idea for your program to ask for
confirmation first.

A PRUNE.DAT file exists for [3,2]; also, PRUNE has been modified so that
for [3,2] only it sorts the file by filename first rather than extension
first.  Writers of HELPers should add descriptions to the PRUNE.DAT file.
(The command "HELP HELPER" types the filename and use fields only of the
PRUNE.DAT file.)

If there is no HELP file on the topic specified by the user, the HELP
program looks for files with that name and any extension on [UP,DOC],
[S,DOC], and [AIM,DOC] in that order.  The full name of the first such
file found, if any, is typed, with a suggestion that the user might
want to read that file.  The file itself is not typed out, on the
theory that users of HELP are looking for short help rather than full
documentation.  Thus, if you can think of nothing to say about your
program other than the location of the full documentation, you need
not bother.  For utility programs, though, you can usually think of
some short and sweet paragraph which will get the user through the
most common uses of your program.

[xxx,DOC] files with extension UPD are not listed as described in the
previous paragraph, except that if both NAME.EXT and NAME.UPD are found
on the same PPN, both are mentioned.

If the HELP command is given at a display terminal, and there is no
HELP file for the given topic but there is a [xxx,DOC] file, then
the command R E;<file>/R is loaded into the line editor buffer.
	PRUNE	PRUNE.DAT    One line descriptions of files

To use: type R PRUNE
To reference PRUNE.DAT files: type READ PRUNE.DAT[<desired ppn>]

PRUNE is a program available on the system which help a user keep track of
his files.  PRUNE can  be used to  makes a file,  PRUNE.DAT, which has  an
entry for each  file.  The  entries contain  the file  name, extension,  a
programmer field and a description  field.  Prune has commands for  making
these entries, finding specified entries and for pruning your disk area of
unwanted files.

PRUNE.DAT files exist for  some of the system  file areas and contain  one
line descriptions of the files located in these areas.  In particular, see
those on [UP,DOC],  [S,DOC], [1,3] and  [3,2].  Use  READ PRUNE.DAT[<ppn>]
and not R PRUNE to read these,  unless you are responsible for some of the
entries and want to change them.

PRUNE.DAT[3,2] has one-line descriptions for the following monitor commands:
The current state of this list can be seen by typing RUN MONCOM[3,2].

Monitor Commands:  SU-AI WAITS 9.10/Y  Assembled 08/28/80

@       COPY    DSKSIZ  FLUSH   LOGOUT  PUMPKI  SETTIM  UNDELE  
A       CORE    DT      FORK    MAIL    QSPOOL  SETUW   UNPROT  
ACCESS  CREATE  DTN     FTP     MAKE    R       SETUWP  UNPUMP  
ADVANC  CREF    DUMP    G       NODE    RCV     SLEVEL  UNREAP  
ALIAS   CSTART  E       GET     NOE     READ    SPOOL   UNSPOO  
ASSIGN  CTYSET  ECC     GRIPE   NOEDIT  REAP    SSAVE   VE      
ATTACH  D       ED      HALT    NOEIT   REASSI  START   VERIFY  
BACKSP  DAYTIM  EDDT    HELLO   NS      REENTE  SUPDUP  W       
BATCH   DDT     EDIT    HELP    OFIND   REMIND  SYSTAT  WHE     
BEEP    DE      EFIND   HOST    OTN     RENAME  TALK    WHEN    
BOOK    DEASSI  ELFQFI  HOT     P2LOAD  RER     TECO    WHERE   
C       DEBUG   ENABLE  K       PDETAC  RERUN   TELNET  WHO     
CANCEL  DECIDE  EOT     KATTAC  PJOB    RESET   TEST    XGPLIS  
CCONTI  DELETE  EREAD   KILL    PLAN    RESOUR  TIME    XPART   
CD      DETACH  ETV     KJOB    PLIST   RESTOR  TLIST   XSPOOL  
CDETAC  DFIND   EVENT   KLOG    POX     RETRY   TN      ZERO    
CETV    DI      EXECUT  L       PPPN    REWIND  TRANSF  
CFORK   DIAL    FI      LATER   PREPAR  RSL     TRY     
CKMAIL  DIRECT  FILES   LISP    PRO     RUN     TTY     
CLRUW   DISABL  FIND    LOAD    PROCES  S       TURKEY  
CLRUWP  DO      FINGER  LOCATE  PROVE   SAVE    TYPE    
COMPIL  DQAVG   FINISH  LOG     PTTY    SD      UDPUFD  
CONTIN  DRD     FIXIML  LOGIN   PUB     SEND    UFD     
Equipment

The following equipment is currently in use.

1 Digital Equipment Corporation KL10 and KA10
(36 bit words).

 262k words of 1 microsecond DEC core (MG10),
131k words of 1 microsecond Ampex core.

1 Ampex disc file (3330-11 type), 6 spindles
(capacity: 7.8 x 10↑9 bits).

 4 Dectape drives, 2 mag tape drives (7 track),
line printer, Calcomp plotter, Xerox Graphics Printer.

 58 Data Disc displays, 6 III displays, 3 IMLAC displays,
10 Datamedia displays, 15 Teletype terminals, 5 TI terminals.

 DEC PDP-11/45 and SPS-41 with 8k words (16 bit) of core
and 197k words of Intel MOS memory.

Communications processor: BBN TIP (Honeywell DDP-316) connected to the ARPA
Network.

Special equipment: Audio input and output systems, hand-eye equipment
(4 TV cameras, 2 arms), remote-controlled cart.
.end

Basic system commands

Reference: Monitor Command Manual, SAILON-54.6, November 1977
	on line as MONCOM.BH[S,DOC]  latest corrections in MOMCOM.UPD[S,DOC].

All commands to the system monitor end with <carriage return>.

Computer accounts are designated by PROJECT and USER initials (one to three
letters each).  E.g. "1,BAR" refers to project 1 of user BAR.  File names
are of the form SAMPLE.SAI[1,BAR], where the name SAMPLE may be up to six
letters long, the extension SAI may be up to three letters and is usually
used to designate the class of file (e.g.  "SAI" means that this is a
program written in the SAIL programming language).  If the account
designation is omitted ([1,BAR] in the example), your own account is presumed.

COMMAND			EFFECT

L BAR		Logs you in, as project 1 (by default), user BAR.  If there is
		a password on this account (as there must be for remote login),
		you will be asked for it, but your answer will not be printed.

L 2/BAR		Logs you in as project 2, user BAR.
		To change a password, log in with "%" in place of "/".

K		Kills your job (logs you off).

RCV		Starts reading messages in your "mail box".  For a list of
		alternative commands, say "?" when it asks for a command.

ET∂		Enters your mail file with E, allowing you to read it, or to
		write into it or rearrange it as you will.

MAIL LES	Initiates a message to user LES.  It first requests a subject,
		then the text of the message.  The message is terminated with
		a <meta><control>LF if you are on a display terminal or a
		<control>Z character (i.e. hold down the CONTROL key and
		type "Z") if you are on a non-display terminal.

⊗XMAIL LES	An alternate method of sending mail while in E.  For details
		see the ⊗? file while in E or type ET? to the system monitor
		to enter this file directly.

DIR		Lists the names of all files in your account directory.

DIR *.SAI[*,REG]  Lists the names of all files that have an SAI extension
		in any account belonging to user REG ("*" means "any").

TYPE SAMPLE.SAI	Types out the file SAMPLE.SAI stored under your account.

CET LIST	Creates an empty text file called LIST and lets you insert 
		text using the E editor.
		If you are a complete beginner, learn how to use E by typing 
		HELP ETEACH and following directions.  You can hardly be a
		complete beginner if you are reading this, but never mind.

ET LIST		Enters the (previously created) file LIST with E.
		
CREATE LIST	Creates an empty text file called LIST and lets you insert
		text using the SOS editor.  See the SOS Manual for editing
		commands.

ED LIST.OLD	Starts SOS editing an existing file called LIST.OLD.

COPY PEOPLE←JERKS.OLD	Makes a copy of the file JERKS.OLD in a new file
		called PEOPLE.

RENAME PEOPLE←JERKS.OLD	  Changes the name of JERKS.OLD to PEOPLE.

DELETE PEOPLE,*.OLD	Deletes the file PEOPLE and all files with extension OLD.

PPSAVE			Makes a file copy of the current state of the system 
			displayed screen. Useful in case one wants to save some
			typed out information.
--------------
To stop any program that is running, type CALL if on a display terminal or type
<control>C twice (i.e. push down the key marked "Control" and hit "C" twice) if
you are on a non-display terminal.  To make a program stop typing out without
halting, type  <control>BREAK if on a display terminal or <control>O if on a
non-display terminal.  <control>CLEAR restores typing.

For more complete information on commands, see the Monitor Command Manual
(SAILON-54.6) August 1978.

PRUNE.DAT[3,2] listings
ALIAS 	      	      	Command to change default directory used for disk files
ASSIGN	      	      	Command to acquire use of non-sharable device
ATTACH	      	      	Command to attach terminal to a detached job
DIR   	      	      	Command to list file directories
DSKSIZ	      	JBR   	Program to tell user his disk allocation and usage.
KJOB  	LNK   	      	Command to log out of system (same as HELP LOGOUT)
LOGIN 	      	      	Command to log into system
LOGOUT	      	      	Program to log out of system (same as HELP KJOB)
TALK  	      	      	Command to communicate with other users

DIRED  DMP   1  3   14.7 14-FEB-78 1902 000 105SGK DIRED  23-FEB-78 21-FEB-78 P1070
.sect  Miscellaneous Useful Programs
CALLIT DMP   1  3    431 03-MAR-74 1334 000   1 BH CALLIT 02-FEB-76  05-JUL-75 P527>
DO     DMP   1  3    6.5 22-NOV-76 0122 000   1 ME DO     09-DEC-76  04-DEC-76 P805 
LOGRUN DMP   1  3    284 07-APR-74 1714 000   1 BH LOGRUN 09-DEC-76  05-JUL-75 P527>
PERUSE DMP   1  3    1.9 24-MAR-75 1327 000 NETTVR PERUSE 08-DEC-76  05-JUL-75 P527>
PPSAV  DMP   1  3    560 08-SEP-76 1554 000   1 ME PPSAV  09-DEC-76  19-SEP-76 P764>
PTYJOB DMP   1  3    2.1 14-JUN-76 0152 000   1JBR PTYJOB 09-DEC-76  27-JUN-76 P712>
batch
.sect Controling the World
.ssect1 System Control
RSL    DMP   1  3    9.5 07-JUL-76 1937 000 ACTREG RSL    09-DEC-76  18-JUL-76 P725>
.ssect1 Device Control
ADS    DMP   1  3    728 06-DEC-73 2119 000   1 BH ADS    01-DEC-76  10-MAY-76 P692>
MAP    DMP   1  3    679 22-SEP-75 2307 000   1 BH MAP    09-DEC-76  10-MAY-76 P692>
	Teletype Commands
	DMINT and DMUSE 	Info for beginners on DataMedia

Page 2 of DMINT is reproduced herewith.

     This is the file DMINT[INF,CSD] at the Stanford AI Lab (SU-AI).  This
is a file intended to help you to learn the AI system.  We assume that you
are  using  a  DataMedia   terminal.   This  file  contains   introductory
information about the terminal itself, how  to connect to the system,  how
to disconnect, and some  other basic information about  the AI system  and
its documentation.  The file is intended to be read in hard-copy mode by a
novice.  It can be  read on-line by anyone  who knows very basic  editting
commands.  A companion file called DMUSE[INF,CSD] is intended to teach the
use of  the  E  editor.   That  file  is  intended  to  be  read  on-line.
Instructions which  are sufficient  to allow  use of  DMUSE are  contained
herein.

     It is hoped that these documents  will be useful for the raw  novice,
one who has never dealt with a time-shared computer before.  Consequently,
they will sometimes  be painfully slow  for the user  who only wants  that
portion of the  information which is  peculiar to the  AI system.  On  the
other hand, the document has been prepared  by folks who are far from  raw
novices, so we often  make unwarranted assumptions  about the meanings  of
some terms and instructions.  Suggestions for improvement of either  DMINT
or DMUSE should be sent to Denny Brown.
Useful system features
	FINGER	Locates people or tells when they last ran.  Jan.'78

Programmer:	LES
Source file:	FINGER.SAI[F,ACT]

			NETWORK FINGER
A FINGER command containing %<site name> will now attempt to finger people
at other Arpanet sites.  It does this by connecting to the FINGER socket
at the specified site and passing the rest of whatever you typed (before
and after the "%<site name>" to the host.  If that host supports Network
Finger, then you get whatever they return.

For example, "FING TK%AI" tells you about Tom Knight at MIT-AI and
"FING %SRI" tells you about everyone who is running on SRI-KL.  At this
writing, only the following sites respond to a network FINGER:
all MIT ITS sites (ai, mc, ml, dm), sri-kl, sri-ka, and office-1.
More will be joining shortly.

Normally only one site can be specified in a single FINGER command, but if
you would like to waste some time, say "FING %*" and it will tell you
about everyone out there.

			DOMESTIC FINGER
The system command "FING" shows data on all jobs, in order by programmer
initials.  The "IDLE" column shows the time, in minutes, since the given
job was last in the RUN queue.  If the job is currently in the STOP or
NULL queues, a "." follows.

If there is a digit in the next column, it represents the number of extra
Data Disc channels that belong to this job.

Finally, the "Terminal" part shows the location of the owner (the terminal
that last typed something at this job).  "detached", of course means just
that.  "disowned" means that the terminal that last owned this line has
released it.  "TV" means that this is a television (Data Disc) terminal
that is displaying the channel currently.  "tv" means that the terminal
that owns this job isn't looking at it.

If terminals other than the owner are viewing this job's main channel,
then they are listed on subsequent lines, with the job field blank.  If
you want to know the TTY# rather than the physical terminal, use WHERE or
WHO rather than FINGER.

			   POINTING THE FINGER
The command "FING <people list>" shows data only on the specified people.
For example, "FING JMC,DAVE,WILL" requests information on programmer JMC
and anyone whose first or last name begins with "DAVE" or "WILL".
String matching uses the following precedence:
  1) exact match on programmer initials,
  2) exact match on friendly or last names,
  3) match on leading characters of friendly or last names.
If a given string matches more than one person at a given level, it
reports "ambiguous" and lists their names.

If only one person is specified and he is not logged in, it normally tells
when he last logged out and shows his plan file, if any, but this can be
suppressed with switches (see below).

			FILE LISTS
Arguments in the FINGER command are separated by commas and/or spaces.
An argument of the form "@<file name>" causes that file to be read.
Files can include references to other files, ad nauseum.  In files,
everything to the right of a semicolon on a given line is ignored,
so that comments can be put there.

The default file extension is "DIS" and the default PPN is "[P,DOC]".
Thus if you say "FING @H", it will first look for a file in you area
called "H".  If that doesn't exist, it will next try "H.DIS" in your
area and, if necessary, "H.DIS[P,DOC]", the latter being the list of
hand-eye people which is kept in [P,DOC] along with other group lists
(see SAIL Telephone Directory).

			SWITCHES
Normally, if only one person is specified in the FINGER command and he is
not logged in, the time of his last logout and plan file, if any, are
given.  This printout can be suppressed by using the "-LOGOUT" or "-PLAN"

You can force printing of last logout or plan files even for lists of
people by using the "/LOGOUT" or "/PLAN" switches, which can also be
abbreviated to one letter.  Thus "FING @VB/L" lists everyone on the
volleyball list who is logged in and, for the rest,  the time of their
last logout.

			DOCUMENTATION
The command "FINGER ?" will cause this description to be printed out.
	RSL	Service Level Reservations

Programmer:	Jim Stein; modified by REG & LES
Documentation:	Monitor Manual appendix (SAILON 54)

Used to reserve service level and certain devices, as described in a Monitor
Manual appendix.
	COOL	Summarizes temperature & computer uptime.  Jan. 1978

Programmer:	LES
Source files:	COOL.SAI[T,ACT]

COOL retrieves and summarizes temperature and computer uptime history.
Source files are maintained by the THERMO phantom and exist from
1 January 1978 to date.

COOL asks for the date range, which can take many forms, e.g.
  23	   (the last occurrence of that date, this month or last)
  Feb	   (entire month of February or, if in February, month to date),
  78	   (all of 1978),
  2:5 Jan  (2nd through 5th of January inclusive),
  0 or <null>  (today),
  -1	   (yesterday, -2 for day before, etc.).
Any combination of <date>:<date> can be used, with at least 3 letters of
the month given.  COOL will try to do something sensible even if you leave
some elements unspecified, such as the year.

You can use one-line commands, e.g. "R COOL;-6:0" retrieves data for
the last seven days.

				OUTPUT
COOL normally lists the system downtime and availability (%).  Next, the
number of system reloads is given, if any, as well as the mean time
between reloads, the total number of service breaks, and mean time between
service breaks.  A "break" is defined as either a reload or a pause.
Only pauses longer than 2 minutes can be detected and some up to 12
minutes may escape detection.

Next, it lists the high and low temperatures and the times at which they
occurred, and the mean temperature.  Temperatures are given both in
Celsius and Fahrenheit and are normally outside air temperatures, but can
be switched to the computer room temperature (see below).

				SWITCHES
Switches may be added to the end of the command line, preceded by "/".
Switches may be abbreviated to as little as one letter.
  /INSIDE    gives computer room temperatures rather than outside,
  /BREAKS    gives detailed listings on all service breaks (reloads or pauses),
  /-BREAKS    suppresses all information on breaks, including the summary,
  /SPOOL     both displays and Spools the requested information,
  /XSPOOL    both displays and Xspools,
  /FILE      puts a copy in a file, after asking you for the file name.
  /TIME=<interval>  lists temperatures at the specified interval, which
	     defaults to 10 minutes (the minimum).  For example, "/T=2:00"
	     lists temperatures at 2 hour intervals.  Intervals greater than
	     24 hours cause only the temperature at midnight to be listed.
If you use more than one of the SPOOL, XSPOOL, or FILE switches, it will
use the last one given.

	SOB	Son of Bureaucracy (computer time accounting) Jan. 1978

Programmer:	LES
Source File:	SOB.SAI[F,ACT]

To get a summary of computer usage by project, just type <carriage
return>.  This lists projects in order of decreasing "doubloons" (a
linear function of computer cost components on a somewhat arbitrary
scale).

In calculating this cost, "B time" charges (weekday mornings and
evenings, weekend afternoons) are reduced by a factor of 2 and "C time"
is reduced a factor of 3.  The doubloon cost is also shown as a percentage
of overall computer utilization (excluding system services such as
spooling, accounting, and news service).

Next, the number of logins is given and the percentage of A time, B time,
and C time, based on the doubloon calculation with no discounting.
The last three items are the average core size, CPU utilization (CPU time/
job time), and load average while computing.

There are three possible commands: GROUP, PN, and MOST.  All commands and
switches may be abbreviated so long as they are unambiguous (one letter
will do).  Cases are ignored.  The default command, described above, is
equivalent to GROUP without an argument.  If an argument is given, then it
is matched against the leading characters of the various group names to
select one (e.g. the command "g hand" will retrieve data on the Hand-eye
project).

The PN command with a programmer ID as an argument will get data on that
individual alone.  Without an agument, it exhaustively lists the accounting
data in order by PN, omitting null entries.

The MOST command without an argument lists the 20 heaviest users.  An
integer argument causes that many of the heaviest users to be listed.

			SWITCHES
The /DETAIL switch has effect only on the GROUP command and causes data
for individuals in each group to be listed in order of decreasing cost.
The /FILE switch will subsequently ask for a name and direct output there.
/SPOOL and /XSPOOL do what you would expect.

The /RAW switch is mostly for debugging and causes raw accounting data to
be printed together with a (rough) explanatory heading.
	BUREAU	Computer time accounting (old style)	Oct. 1975

Programmer:	LES
Source File:	BUREAU.SAI[F,ACT]

To find out how much computer time has been  used by any given group
in the period 1971-77, say
.R BUREAUCRACY		(actually, just "R BUREAU" will do).
The program will ask for  dates, PPN lists, and output form.   If you
give  null   responses  (CR)  to  all   requests,  the  program  will
automatically show a summary of computer utilization by  project from
the beginning of the current year through yesterday.

Data covered include number of PPNs, number of logins, job hours, CPU
minutes, core  K minutes, and "Doubloons"  (an approximate measure of
overall cost on  an arbitrary scale).   The entries  are in order  of
decreasing doubloons, except that "All others" is always last.

			DATES

Alternatively, you can  "roll your own".   The raw data is  stored by
PPN for each month over the past year and for each year back to 1971.
When it asks  for dates,  you can say something like "Jul:Oct", which
may or may not work.  If  the current date is December, this gives
you data  for the  current year.   If the current  date is  May, last
year's data is used.  If you say that in July, August,  or September,
it will simply complain.  It doesn't hurt to ask.

If you say just "May" then you get data for the last instance of that
month only.   If you say  ":May" you get data  from 1 January through
May.  If you say 72 or  1972, you get data for that entire year.   If
You mention the  current year, or if you just  hit <carriage return>,
you get year-to-date data.

			PPNs

When the program asks for PPNs, you can say something like:

Bureaucrats:JMC,LES,TW; Bad guys:REG,[SPL,SYS]; Classes: [206],[225]
which will gather data on three groups, separated by ";". Labels (one
or more  words ending in ":") may appear  anywhere in the group list.
If you omit labels,  the groups will be  named "Group 1", "Group  2",
etc.

More generally, the following elements may appear in PPN lists:

group label:pn,[pj],[pj,pn],[*,pn],[pj,*],@file,@@,/SUMMARY

Nothing need be capitalized.  [pj] is of course equivalent  to [pj,*]
and pn means [*,pn].  If a given PPN qualifies for membership in more
than one group, then [pj,pn]  takes precedence over [pj,*], which  in
turn outranks [*,pn].  If you  mention exactly the same thing in more
than  one group the  program will grumble, but  will ignore conflicts
and continue.

Now about the "@file" gizmo: This lets  you compose a horrendous list
as a  text file and gobble it into the middle  of the line.  The file
name may contain a PPN.  Any TV/E directory or SOS line  numbers will
be ignored.   While the on-line  response is restricted to  one line,
the  text file may  contain many  lines.  It  will be read  as if the
carriage returns don't exist. You can go indirect any number of times
and  any  number  of  levels,  though  string  space  may  freak  out
eventually.

The "@@"  form says "go read  the telephone list".   This will assign
everyone to  groups on the basis of project affiliations given in our
telephone directory.   Individuals who are  in more than one  project
are  arbitrarily pushed into  the first  one on  their list.   People
without a listed project are dumped into "Miscellaneous".  Of course,
this  still  leaves a  few  "outlaws"  who  are  not on  any  of  our
authorized  user lists.   You can precede  the "@@" with  one or more
group  lists of  your  own,  which  will  take  precedence  over  the
directory groupings.

			OUTPUT

After the  data  is generated,  the program  repeatedly  asks for  an
output specification of one of the following kinds:
 <blank>		type a summary
 *			type detailed listing
 S			spool a summary
 S*			spool details
 <file>			save summary in file
 <file>*		save details in file.
 .			loop back to respecify PPNs and dates.

On reruns, the null reply to PPN and  Date questions means "just like
last time".  Thus,  you can easily ask for data from a different time
period with the same  cast of characters, or  for the same time  with
another group.
	LESCAL	Calendar-maker.		Dec. 1974

A program for printing or typing calendars in any of 63 formats.  To run, say
"R LESCAL" and answer the questions.

Documentation:	self-documented, with a sprinkling of political commentary.
Programmer:	LES
Source file:	LESCAL.MAC[CSP,SYS] (written in MACRO-10 before FAIL was invented).
	FREEFO	Text macro processor		March 1973

Programmer:	LES
Source file:	FREEFO.LES[UP,DOC]
Documentation:	FREEFO.LES[UP,DOC]

Freeforol is a text macro processor that can be used to generate form
letters  and other fill-in-the-blanks text.  If you say  R FREEFO, it
types a "*" and expects a keyboard input of the form
    <source file list>
or
    <destination file>←<source file list>
where the  <source  file list>  consists of  one or  more file  names
separated  by  commas.    These  must  be  text  files  and  will  be
effectively concatenated in the order given.

	KWIC	Keyword in context program	Dec. 1973

Programmer:	LES
Source file:	KWIC.SAI[S,LES]

This program can be used to produce a concordance, index, word count, or
word list for any given text file.  To run, say "R KWIC".  The simplest
command that it understands is:

*<source file name>

This  causes the  source file  to  be scanned  for  words, which  are
compared with  an internal dictionary of common  words.  Any that are
not in the dictionary are  considered to be "keywords".  The  program
produces  an output  file,  in this  case  called <source>.KWC,  that
contains  an alphabetized  list of  keywords, one per  line, together
with the local context and a reference to the page  and line on which
they  occur.  It  also  lists  the  number  of  occurrences  of  each
dictionary word.  A typical output might begin as follows.

                       Concordance of SIGNUP[W,LES]                        
                    275 keywords, 961 dictionary words                     

                                47 a
                                 5 about
Page Line                          ------
  5   22                 A roll of adhesive tape or electrical tape.  
                                 6 after
Page Line                          ------
  1   30  August 16 at noon in the AI Conference Room.  
                                 2 air(s)(ed)(ing)
                                 3 all
Page Line                          ------
  3   15         If you come to an ambiguous fork in the trail, preferably 
                                 1 among
  ......

Numbers appearing  just to  the left  of center  are word counts  for
dictionary  words (with  various suffixes), while  the page  and line
numbers point to the locations of keywords in the  original document.
Line numbers are counted from the top  of the page.  SOS line numbers
(if  any) are ignored, as are TV/E  directory pages,  though the page
numbering includes  the directory.   Words  beginning with  different
letters of the alphabet are placed on different output pages.

			General Command Format

The more general command format is:

*[<output file>←]<source file>[/ONLY | /ALL][/INDEX | /COUNT | /LIST]

where bracketed  elements are optional  and alternative  switches are
separated by "|".  Both source and output files must be on the disk.

All  switches may  be abbreviated  to one letter.   The  /ONLY switch
causes only keywords to be  listed in the output file (i.e.  omitting
counts of dictionary  words).  The /ALL switch  causes the dictionary
to  be ignored,  so  ALL words  are treated  as keywords.  (Beware: a
concordance produced  with the ALL  switch on  is typically about  10
times the size of the original document.

The /INDEX  switch causes  the context to  be omitted and  produces a
three-column listing of words and their original locations (page  and
line) or number of occurrences (dictionary words).  The /COUNT switch
causes word  counts only to be generated  for keywords and produces a
four-column listing of  these counts.   The /LIST  switch produces  a
raw,  seething word  list (i.e.  an  alphabetized list  of all  words
used), one  per line, with no header information, and all on one long
page.

			 Scanning Procedure

KWIC treats as a word any alphanumeric string beginning with a letter
and  possibly containing "'", "-",  or "/", but nothing  else.  Thus,
things beginning with digits are ignored.  Words hyphenated over line
boundaries are reassembled.

In order to provide as much context as possible for each keyword, the
text is "dejustified" within each paragraph, so that redundant spaces
between words are removed and successive lines are concatenated, with
a <space> replacing  the <CRLF>. A new paragraph  is assumed to begin
whenever there is  a blank  line, a  <TAB> in  column 1,  or a  <form
feed>.
	XGPTYP	Converts XGP file to text form		Dec. 1975

Programmer:	REG; modified by HJS & LES
Source file:	XGPTYP.SAI[CSP,SYS]

XGPTYP converts an XGP file into a straight text representation of the
various XGP commands.  Handy for debugging document compilers.  It prompts
for a source file name.  The default source file extension is "XGP".
Output goes either to a destination file or, if none is given, to your TTY.

Editors
    Text Editors

    Editors consist of two general types, basic text editors that make  it
possible to create  and modify  texts of all  sorts, and  the second  type
consisting of  speciallized  editors which  handle  formatting,  indexing,
pagination, and similar details.

General Editors
	General Editors
		E	The page and display oriented basic editor.
		SOS	Line numbering basic editor for teletype usage.
		TECO	Original MIT-DEC editor with many exotic features.
		TV	Earlier version of E

	E	The page and display oriented basic editor.

Currently maintained by ALS and ME.

Documentation
	ESSENTIAL E  a hard-copy Computer Science Report N0. STAN-CS-80-796

For other documentation, type
	HELP E
	READ E  for complete documentation
	HELP ETEACH  for a self-teaching manual
	<META><CONTROL>?  while using E
	READ EINIT.CMD[1,3] for some useful E macros

To use
	Type ET NAME where NAME is the name of file to be edited.
	Type CET NAME if file NAME is to be originally created.
To exit
	Type <META><CONTROL>E

    E is a page-oriented editor designed for use with a display  terminal.
It brings one page of the text into core, as requested, and it displays  a
portion of  this page  as if  through a  window.  A  line pointer  and  an
underscoring cursor mark  the position  in the  text where  editing is  to
occur.  Special commands allow you  to go from page  to page, to move  the
window up or down on the page and  to move the line pointer and cursor  as
desired.

    E achieves its speed (1) by using  the system line editor, (2) by only
changing the core copy of the text  on the completion of a line edit,  and
(3) by updating the disk copy of the page only on the completion of a page
edit (automatically effected by moving to another page).

    Type  HELP ETEACH  if you  are unacquainted  with  this  editor.   An
abridged manual will be copied into  your file area and displayed to  you.
This manual is designed for self teaching and it leads you by simple steps
to a basic understanding  of the editor  so that you  can then procede  on
your own,  with  occasional references  to  the complete  manual  via  the
question mark command, as noted below.

    Many users of E  find it convenient  to have a  copy of the  hard-copy
manual ESSENTIAL E (Report No.  STAN-CS-80-796) available to refresh their
memories concerning details that they use but seldom.

    A  complete  manual  on  this  editor  is  available  on-line  and  is
referenced while using  the editor  by typing <CONTROL>?.   Return to  the
file that you had been editing is via the command <CONTROL>H.
	SOS	Line numbering basic editor for teletype usage.

Currently maintained by LES.

For other documentation, type
	HELP SOS
	READ SOS.LES[UP,DOC]

To use
	Type ED NAME where NAME is the name of the file to be edited.

    SOS is a line-number oriented editor for text files.  It features  two
flavors of intraline editing (for  Teletypes and displays), string  search
and substitution, hyphenless text justification, and other glories.

    SOS provides the ability to insert, delete, modify, and print lines of
text.  While most  commands are  line-number oriented,  string search  and
substitution commands are available.  The entire text with line numbers is
brought into core.

    Graphic Editors
	GEOMED	A graphics editor.
	SUDS
	MS
GEOMED OLD   1  3   19.1 20-MAY-74 0407 000 GEMBGB GEOMED 26-JAN-78 09-OCT-76 P774>
	GEOMED	A graphics editor.

    GEOMED is implemented in PDP-10 machine code and is composed of  about
250 subroutines.  These  subroutines are  SAIL and  LISP accessible.  When
load in a SAIL  core image, the GEOMED  subroutines are called GEOMES  for
"Geometric Modeling Embedded  in SAIL";  when loaded with  LISP, they  are
referred to as  GEOMEL, "Geometric Modeling  Embedded in LISP".   Strictly
defined, the  name  "GEOMED"  refers to  the  interactive  editor  itself;
however the reader  is warned that  the named "GEOMED"  may also refer  to
GEOMEL, GEOMES, MESGEM, the data structures, the command languages, and so
on.

    As a graphics language, GEOMED is all semantics with no syntax of  its
own. The subroutines  take from one  to four arguments,  return one or  no
values, and usually have considerable side effects on the data structures.
Unless otherwise noted, all arguments and values are integers; subroutines
executed only for effect tend to return integer value zero.

    The GEOMED  data  structure  is  implemented  as  twelve  word  blocks
containing pointers  and  data  in  the  fashion  usual  to  graphics  and
simulation. The twelve word blocks are called "nodes".  Nodes are referred
to by their actual  machine address in  the user core  image, which is  an
integer called  a "link".   Subroutines that  take nodes  as arguments  or
return nodes as values  pass links rather than  the nodes themselves.   In
SAIL, the user core image can be accessed as a special array named MEMORY;
in LISP, the core  image is accessible  in the last  resort by the  SUBRs:
EXAMINE and DEPOSIT.

A COMPLETE MANUAL exists on-line as GEOMEN.BGB[UP,DOC].

    Font Editors

FONTS: COMBIN DDFONT EDFONT F FCOPY FMUNGE FONT FSCALE PIX TVFONT UFC[XGP,SYS]

Local font wizards include BH, DON, LES, REF, and TVR.
REF is responsible for this explanation.

References:
    TVFONT.BGB[UP,DOC]
    R PIX then ?
    COMBIN[3,2]
    EDFONT.TVR[UP,DOC]
    FMUNGE.REF[UP,DOC]
    F.TVR[UP,DOC]
    FCOPY[3,2]
    DDFONT[3,2]
    UFC.REG[UP,DOC]
    FORMAT.DOC[XGP,SYS]
    FONT.BH[UP,DOC]

	The XGP has the capability for outputing text in many different
character sets or "FONTS".  Several programs exist on the system for creating,
examining and modifying fonts.  These programs (and several other FONT
oriented programs) are described in this section.  A glossary of font
"terms" follows at the end of the section.

	There are essentially two different ways to create a font, either
by inputing a "picture" of the font through a TV camera, or by describing
the pixels of each glyph.  To input a font through a camera, try using the
programs TVFONT or PIX.  TVFONT is described in TVFONT.BGB[UP,DOC], and
PIX is "self documenting".  That is, one can say "R PIX" to the monitor,
and "?" to PIX for documentation.  Local experts on these programs include
TVR, RWW, and HPM.  Good luck.  You'll need it.

	Font creation through glyph description is essentially similar to
font modification, only starting from scratch.  There are currently three
font editors available on the system, EDFONT (documentation
EDFONT.TVR[UP,DOC]) for doing interactive font modification, FMUNGE,
(documented on FMUNGE.REF[UP,DOC]) a system for reading and writing font
files in text format, and editing them with ETV, and F (F.TVR[UP,DOC]).
Local experts on EDFONT include TVR and DON, on FMUNGE, REF.  F is a
program for doing everything and anything to font descriptions.
Unfortunately, its documentation is basically unintelligible, its use,
unwieldy.

	These last three programs, and several others, can also be used to
modify "font characteristics", such as font height and various character
kerns.  For example, COMBIN (COMBIN[3,2]) can be used to "mix" two fonts
together, and FONT (FONT.BH[UP,DOC) to set the global characteristics of a
font.  TVR is the local expert on COMBIN; BH on FONT.

	And, finally, a useful program for modifying fonts is FSCALE
(documented on FSCALE.DON[UP,DOC]).  FSCALE is useful for creating larger
and smaller versions of a particular font, through a uniform scaling
algorithm.  See DON for help.

	SAIL is not, of course, the only system with an XGP.  Fonts from
other sites, such as ISI, CMU and MIT, can be converted to SAIL format
using the program FCOPY (documented on FCOPY[3,2]).  FCOPY will also
produce samples of a font on the XGP.  For viewing a font on a data disc
run DDFONT (DDFONT[3,2]).  TVR is the FCOPY wizard; consult TVR or DON for
help with DDFONT.

	After you've created or modified your font, you can compile it
with the program UFC.DMP[XGP,SYS].  UFC.REG[UP,DOC] explains what
compiling a font means, and why it's good for you.  Unfortunately, the
error messages UFC produces are obscure, and there is no current wizard.

	The format of font files is detailed in FORMAT.DOC[XGP,SYS].  Most
of these programs accept .FNT as the default extension for font files;
most will also look on [XGP,SYS] for fonts.  [XGP,SYS] is where the
"system" fonts reside; some people, of course, have their own font
collections.

Glossary:

FONT		A collection of raster described characters for printing
		text on the XGP.

GLYPH		An individual character, or character description in a font.

PIXEL		1/200 of an inch square, the resolution of the XGP.  
		Each "1" bit in a glyph description correspondes to 
		darkening one pixel.

FONT HEIGHT	The number of pixel lines allowed for a line of type in this
		font.  The name of a font is usually a good approximation to its
		height.  Thus, NGR30.FNT[XGP,SYS] has a font height of 32 pixel
		lines.

LEFT KERN	The overlap that this character makes with the previous character.
		Useful for getting italic characters to run together.  Usually
		set to zero.
Document Compilers
	PUB	Publication editor to achieve book format.
	PUBMAC	Macros for generation of tables of contents etc.
	POX	Formatting editor for use with the XGP.
	POX	Formatting document compiler for use with the XGP.

Maintained by REM

Reference POX.XGP[UP,DOC]  (suitable for XSPOOLing)
	Latest up-date info on POX.LOG[1,REM], not recommended for the
 		novice.
also read the HELP POX file.

    POX is  a program  for making  documents that  take advantage  of  the
special features  available  on the  Xerox  Graphics Printer  (XGP).   The
special features  that POX  provides are  mainly font  switching and  text
justification.  (There are some other features, but a novice user need not
be concerned with them at present.)

    POX takes a file as input and produces an output file that is suitable
for spooling  with  the XGP  spooler  (XSPOOL command).   The  input  file
contains instructions to  POX and  the text  of the  document.  POX  takes
character sequences as commands.  Each  command sequence is preceded by  a
character, called the Escape Character.   The first character in the  file
(ignoring TV directories  and SOS  line numbers) is  taken by  POX as  the
escape character.  Thus, the  user gets to  specify the escape  character.
The escape character can be arbitrary, but reason dictates that it  should
be some character that appears infrequently (or not at all) in the text of
the document.  Common choices for the escape character is \ or $.  In  the
remainder of this document, the character \ represents the current  Escape
Character.

    To run POX, use the system command R POX.  POX wants to see a  command
of the form:  <OUTPUT FILE>←<INPUT FILE>.   If the <OUTPUT  FILE> term  is
omitted then the output file  will have the same  name as the input  file,
and ".XGP" extension.   If the extension  is omitted on  the output  file,
".XGP" will be used.

    If all is well with the input file, POX will run and produce an output
file suitable for XSPOOLing.  POX will load the appropriate XSPOOL command
into your line editor, so all you have  to do is type return to spool  the
file.

	PUB	Publication compiler to achieve book format.

    PUB  is  an  advanced  text  justifier  and  page  formatter  intended
primarily for  use by  programmers.  It  can automatically  number  pages,
sections, figures, footnotes, etc.  and  can print their numbers in  roman
numerals as  well as  in digit  or  letter form.   It can  generate  cross
references, tables of contents, and indexes.  Page layout is flexible, and
allows  multiple   column   output.   Line   formatting   includes   tabs,
underlining,  superscripts,  subscripts,  centering,  and   justification.
Macros programmed in a  SAIL-like string-processing language can  generate
text to be printed in the document.  The output of the compiler is a  file
which can  be  printed  on  the  terminal, on  the  line  printer,  or  on
microfilm.

    A complete manual exists for this editor and can be consulted  on-line
by typing READ PUB.TES[S,DOC]
	PUBMAC	Macros for generation of tables of contents etc.

.<<     TWO COLUMN FORMAT       by L. Earnest           February 1975
.
.This is a description of how to use the PUB macros in BASKER.PUB[SUB,SYS].
.These macros set up one- or two-column formats with Section, Subsection, and
.Subsubsection numbering and automatic Table of Contents generation.
.
.                       Heading
.First, your file should specify the device.  If it is "DEVICE XGP", then
.you must specify both a Font 1, which should be lightface,
.and Font 3, which should be boldface.  For example, if you say
. REQUIRE "BASKER.PUB[SUB,SYS]" SOURCE_FILE;
.you will get the three Baskerville fonts, with Font 2 being italic.
.
.                       One-sided Documents
.For documents that will be printed on only one side of the paper, the
.Section name will appear in the top left of each page and the page number
.in the top right.
.
.                       Two-sided Documents
.For documents that will be printed on both sides of the paper, even numbered
.(left) pages will have the page number in the upper left corner, followed by the
.the Section name.  Odd numbered (right) pages will have the Subsection name
.(if any) in the top left and the page number in top right.
	TEX	A system for Technical Editing by Donald E. Knuth
 
Maintained by D.E. Knuth

Reference	TEX and METAFONT by D.E.Knuth, Digital Press (1979),
		available at the bookstore.
		
TEX is a new document compiler developed by D. E. Knuth here at the
lab. The standard version is obtainable by typing "r tex" to the monitor;
our version assumes to some extent that the very next thing
you type is "\input <file><CR>" (note that it's \ not /). This makes
TEX look at <file>.TEX on your area, or failing that to look at <file>.TEX
on system area [1,3]. Your output will be on <file>.XGP and it can be
spooled with "xs <file>/head/ntn=33"; omit "/head" if you don't want the
fine print atop each page telling you the date and time of spooling.

If you use other fonts besides the ones declared in the file BASIC.TEX[1,3],
TEX will expect to find .TFX files for them on the same area as the font.
These files can be generated using the TFXGEN program.  Say "read tfx"
for more information.  Important:  This version of TEX has thirteen font
files preloaded, so any additional fonts should be assigned font codes
other than "@adfgjlmquxz?".

The user manual is A. I. Memo No. 317 ( = CS Report No. 675); it is currently
out of print, so newcomers will need to buy the one mentioned above.
There's no on-line or line-printer version, but you might be able to
figure out how to read manual.tex[tex,dek].

The SAIL program contains extensive documentation about the implementation;
it's not merely "commented code". See file TEXSYS.SAI[tex,dek] and the
files it references.
	MAXTEX	TEX preloaded version and macros.

Mantained by MMD (Max Diaz)

Suplementary information:

    Type READ MAXTEX for on-line documentation

    KERMAC.TEX[tex,sys]      Basic set of macros
    LETMAC.TEX[tex,sys]      Macros for letters
    MATMAC.TEX[tex,sys]      Macros for math
    PAPMAC.TEX[tex,sys]      Macros for papers and documents
    TEXMAC.TEX[teX,sys]      To print TEX macro files
    TMRMAC.TEX[teX,sys]      Times Roman macros (cf. TBASIC.TEX[TEX,SYS])

    MACDOC.*  [TEX,MMD]	     To list the above files.  Check whether there
				     is a .PRE file present, and print it.
    MACROS.LOG[TEX,MMD]      Info on current status of all of the above

MAXTEX is  a preloaded  version of  TEX: it  has information  on 41  fonts
(named abc...zABC...L@;?).  Otherwise, it is used just as the ordinary TEX
in the system. MAXTEX is in area  [1,3], so you need only type "r  maxtex"
to the monitor and  \input kermac. To end,  type \bye.  Font  declarations
are compatible with those found in  BASIC, and almost everything else  the
manual describes, will work using MAXTEX (see documentation file).

The macros,  however, furnish  many more  facilities than  those found  on
BASIC.TEX.  These include handling of chapters, sections, etc.;  automatic
table of  contents (as  well as  plates and  figures); several  styles  of
pages,  with   different  headings;   comments,  annotations,   footnotes;
multi-column format;  paragraphing  macros (enumerate,  itemize,  display,
indent, etc.); no-fill  mode; and  many more.   Documentation is  somewhat
frugal at the moment; it appears in file MAXTEX.MMD[UP,DOC] in the form of
general descritions.  Brief comments appear in every macro file (KER, LET,
MAT, PAP, TMR) before each macro;  else, references to the TEX manual  are
given.

For many applications, MAXTEX together with the macros furnishes a dialect
that permits you to forget largely about boxes and glue and totally  about
\output routines.  Furthermore,  many of  the routines  are structured  to
make reshaping easy (e. g.  headlines, page styles, running-heads,  fonts,
formats), for slightly  more involved  applications, or  to customize  the
style.
Built-in Editors
	ILISP
	AID
	BASIC
Programming Languages
.sect Algebraic languages
.ssect1 ALGOL - like languages
.ssect2 SAIL
.reference(Symbolic languages, SAIL)
SAIL   DMP   1  3   25.9 07-DEC-76 1906 005   1JFR COPY   09-DEC-76  08-DEC-76 T23  
PROFIL DMP   1  3    7.1 07-DEC-76 2329 005   1JFR PROFIL 09-DEC-76  08-DEC-76 T23  
INDENT DMP   1  3    8.3 29-JUL-72 1610 000 SLSDCS        24-OCT-76  05-JUL-75 P527>
SAILDP DMP   1  3   46.9 07-DEC-76 1111 005   1JFR SAILDP 08-DEC-76  08-DEC-76 T23  
SEGFND DMP   1  3    5.3 20-OCT-74 1613 000   SRHT SEGFND 06-JAN-76  05-JUL-75 P527>
.ssect2 PASCAL
PASCAL DMP   1  3   20.6 29-MAY-76 0811 000   P TM COPY   21-NOV-76  14-JUN-76 P707>
.ssect1 Mathematical languages
.ssect2 Fortran
F40    DMP   1  3   10.1 09-JUL-76 2255 005   1EJG COPY   09-DEC-76  25-JUL-76 P731>
.ssect2 Interactive desk calculators
AID    DMP   1  3   10.1 07-NOV-75 1710 000 ACTREG AID    09-DEC-76  25-NOV-75 P609>
BASIC  DMP   1  3   12.6 17-MAR-73 0320 000 ACTREG BASIC  06-DEC-76  05-JUL-75 P527>
WISE   DMP   1  3    6.9 24-FEB-72 1044 000   2RES        09-DEC-76  05-JUL-75 P527>
.sect Symbolic languages
.ssect1(LISP and LISP derivatives)
BCOMPL DMP   1  3  111.0 22-OCT-76 1757 000   1RPG BCOMPL 23-OCT-76  06-NOV-76 P789>
COMPLR DMP   1  3   32.9 31-MAR-76 1028 000 JNK BG COMPLR 08-DEC-76  11-APR-76 P680>
CROSS  DMP   1  3    8.2 08-AUG-75 0943 000 SYSSUZ COPY   24-OCT-76  08-SEP-75 P570>
DDTLSP DMP   1  3   50.0 08-DEC-76 1258 000 AIDRPG DDTLSP 08-DEC-76  09-DEC-76 T25  
FORMAT DMP   1  3   24.0 11-NOV-72 2302 000   S WD COPY   06-DEC-76  05-JUL-75 P527>
FUNLST DMP   1  3   13.2 08-AUG-75 0945 000 SYSSUZ COPY   01-DEC-76  08-SEP-75 P570>
IC     DMP   1  3   49.9 24-FEB-75 1243 000 FOLRWW ICIC   15-NOV-76  05-JUL-75 P527>
IL     DMP   1  3   11.9 29-JAN-76 1510 000 FOLRWW FRAID  09-DEC-76  17-FEB-76 P652>
LISP   DMP   1  3    9.9 07-FEB-74 0123 000   SDWP LISP   08-DEC-76  05-JUL-75 P527>
MACLSP DMP   1  3   33.3 08-DEC-76 1444 007 204CGN MACLSP 09-DEC-76  09-DEC-76 T25  
MEXPR  DMP   1  3   23.9 19-JAN-74 1847 000 L70DAV MEXPR  09-JUL-76  05-JUL-75 P527>
MLISP  DMP   1  3   23.9 13-NOV-74 1743 000 ENGHJE MLISP  12-NOV-76  05-JUL-75 P527>
MLISP2 DMP   1  3   33.9 31-MAY-74 2114 000   1HJE MLISP2 08-DEC-76  05-JUL-75 P527>
MLISPC DMP   1  3   33.9 13-NOV-74 1745 000 ENGHJE MLISPC 08-DEC-76  05-JUL-75 P527>
MONITR DMP   1  3    3.5 06-MAY-72 1138 000   1DCS        08-OCT-76  05-JUL-75 P527>
NCOMPL DMP   1  3   89.0 09-DEC-76 1036 007 AIDRPG NCOMPL 09-DEC-76 
RLISP  DMP   1  3   24.9 27-NOV-76 1455 000   1ACH TMP    08-DEC-76  04-DEC-76 P805 
REDUCE DMP   1  3   49.9 09-DEC-76 1648 000   1ACH TMP    09-DEC-76 
.ssect1(Other Symbolic languages)
PLNR   DMP   1  3   23.0 26-APR-72 0408 000   1RPO        24-SEP-76  05-JUL-75 P527>
SCHEME DMP   1  3   60.0 09-DEC-76 1114 000 AIDRPG SCHEME 09-DEC-76 
FASBOL DMP   1  3   34.8 25-MAY-75 0553 000  CSMJC COPY   01-DEC-76  05-JUL-75 P527>
SLR1   DMP   1  3   16.0 26-NOV-76 1242 000 PSI JP COPY   09-DEC-76  04-DEC-76 P805 
.sect Languages for system building
.ssect1 (PDP-10 Assemblers)
FAIL   DMP   1  3   15.8 03-JUN-76 1756 000 ACTREG FAIL1  09-DEC-76  14-JUN-76 P707>
MACRO  DMP   1  3    9.2 19-JAN-76 2347 000   SMJC LOADER 07-DEC-76  01-FEB-76 P644>
MIDAS  DMP   1  3   21.7 23-NOV-76 1436 000 NETMRC MIDAS  09-DEC-76  04-DEC-76 P805 
.ssect1(Structured System Programming)
BLISS  DMP   1  3   46.2 27-SEP-76 0908 000 BLI TM XBLS10 01-NOV-76  16-OCT-76 P777>
.ssect1(Educational System Programming)
MIX    DMP   1  3   19.3 06-FEB-76 1900 000   1DSB COPY   13-NOV-76  23-FEB-76 P655>
MIXAL  DMP   1  3    4.2 11-FEB-72 0950 000               13-NOV-76  05-JUL-75 P527>
    Machine Languages
	FAIL	A fast one-pass assembly language

To use:
	Have a source program written in assembly language with an
	  extension of .FAI or missing.
	Give system command COMPILE <NAME> or use EX <NAME> if you
	  want program to be compiled and executed.

Reference: FAIL.REG[AIM,DOC],AIM 291

FAIL is an  assembly program for  PDP-6 and PDP-10  machine language.
FAIL operates in one pass,  which means that it reads the  input file
only once;  the linking loader program (LOADER or  LINK-10) completes
any aspects  of the assembly  which could not  be done by  FAIL.  The
efficiencies which have  been employed in  its coding make  FAIL five
times faster than MACRO-10, the DEC assembler.

FAIL  processes  source program  statements  by  translating mnemonic
operation codes into the binary codes needed in machine instructions,
relating  symbols to  numeric  values, and  assigning  relocatable or
absolute  core  addresses  for program  instructions  and  data.  The
assembler  can prepare  a  listing of  the program  which  includes a
representation of the  assembled code.  Also, the  assembler notifies
the user of any errors detected during the assembly.

FAIL has a  powerful macro processor  which allows the  programmer to
create new  language elements to  perform special functions  for each
programming job.

FAIL permits an ALGOL-style  block structure which provides a  way of
localizing the usage of  symbols to particular parts of  the program,
called blocks.   Block structure  allows the same  symbol name  to be
given different meanings in different blocks.

The user should be familiar with the PDP-10 instruction set, which is
described in both DECsystem-10 System Reference Manual and PDP-10 and
PDP-6 Instruction Sets (SAILON-71).

Other documents of interest:

Frost, M.  UUO Manual, SAILON-55.5, November 1977
Harvey, B. Monitor Command Manual, SAILON-54.5, January 1976
Petit, P.  RAID, SAILON-58.1, September 1969

The following are available in the DECsystem-10 Software Notebooks:

       Cross-Reference Listing: CREF, June 1973
       DDT-10 Programmer's Reference Manual, June 1973
       Linking Loader Programmer's Reference Manual, August 1971
       LINK-10 Programmer's Reference Manual, May 1973
       MACRO-10 Assembler Programmer's Reference Manual, June 1972
       DECsystem-10 Operating System Commands, February 1974
       DECsystem-10 Monitor Calls, June 1973
	MACRO	An older 2-pass assemblier with good macro facilities
	MIDAS	MIT's assembler for the PDP-10

Maintained by RMS and MRC.

	Access:
		R MIDAS

     MIDAS is a two-pass assembler for the PDP-10.  While not as fast
as FAIL, it has considerably better error diagnostics and a much more
powerful macro facility.  It is, of course, worlds ahead of MACRO-10.
MIDAS comes from MIT, and is their standard assembler the way FAIL is
the standard assembler here.

     MIDAS also has the capability to generate FASL files for MAC LISP,
for those LISP hackers who need assembly language routines in their
LISP environment.

     MIDAS is accessed in the way most compilers and assemblers are.
The simplest way to compile a MIDAS program is with the COMPILE, LOAD
and EXECUTE monitor commands.

     The MIDAS language is documented in MIDAS.MRC[UP,DOC].
MIDAS  OLD   1  3   26.6 12-NOV-77 2324 000   1MRC MIDAS  12-NOV-77 12-DEC-77 P1022>
MIDAS  DMP   1  3   26.7 12-FEB-78 0828 000   1MRC MIDAS  22-FEB-78 21-FEB-78 P1070
	PALX	PDP-11 assembler

Maintained by RMS.

	Access:
		R PALX

     PALX is a PDP-11 source code assembler for the PDP-10.  This
program comes from MIT, and is considered better than the DEC-supplied
MACY11 program.
PALX   OLD   1  3    6.9 14-SEP-77 0908 000   1MRC PALX   22-OCT-77 03-OCT-77 P981>
	MIX
    Algebraic Languages

PRUNE.DAT[3,2] listings
BAIL  	      	      	SAIL debugger
FAIL  	      	      	PDP-10 machine language assembler
FASBOL	      	      	Dialect of Snobol4
LISP  	      	      	Pointers to documentation of various LISP dialects
SAIL  	      	      	Dialect of ALGOL
SNOBOL	      	      	String processing language--see FASBOL
	SAIL	The standard AI lab. ALGOL based languague
        PASCAL  An ALGOL-60 based languague developed by N. Wirth.

Maintained by nobody at present.

For information about the peculiarities of the SAIL Pascal compiler,  type
READ PASMAN.  To find out about other documentation, type READ PASCAL.  To
learn the language, see the Pascal  Report by Wirth (can usually be  found
at the bookstore), or take CS105 or CS106.

To use, type 
    EXECUTE FOO.PAS

The more common  COMPILE class  commands work  as expected,  but the  user
should be warned that there are still some peculiarities in the way  these
commands interface to PASCAL.

The newer  version was  put up  at SAIL  by Armando  Rodriguez (ARR),  now
departed, who also put up a version  at LOTS and SCORE called PASGO  which
is used by students  and which produces a  runnable core image instead  of
having to be linked.  The current compilers came via LOTS from DECUS,  and
claims to be the '30-DEC-76' version from Hamburg.

	BASIC
	AID
	WISE
	FORTRAN 40
    LISP languages List Processing Languages

Currently, the only LISP that is maintained is MACLISP, the MIT dialect.
Help for that version and other goodies can be found by doing "HELP
MACLISP" or by reading LISP.RPG[S,DOC] and LSPARC.RPG[UP,DOC].  MACLISP is
run on this system with the command:  LISP.

Other LISPs available at the AI Lab are: LISP 1.6, ILISP, MLISP & MLISPC (a
compiler for MLISP), and RLISP.
	MACLISP Standard AI Lab Lisp programming language.

	One can run MACLISP  by saying R  MACLSP; allocation is  much
the same as in the other local  LISPs. To input a file named  FOO.BAR
one says: (UREAD  FOO BAR) or  (UREAD FOO BAR  DSK (BLE TCH)).   This
opens the file in  the correct mode but  does not begin reading.   In
order to read the file, one must set the flag ↑Q (control-Q) to T, by
either (SETQ ↑Q T), (IOC Q), OR ↑Q typed to the toplevel of  MACLISP.
When the file is complete, the TTY becomes the input device. To  read
from a file within  a program, one  does the same  thing, but the  ↑Q
option fails. Unfortunately, UREAD assumes a non-E file. To UREAD  an
E-file (or a non-E file for that matter) one can use EREAD.  When one
does (EREAD FOO  BAR) (SETQ ↑Q  T), then all  MACLISP read  routines,
such as (READ),(TYI), &  (TYIPEEK) will read  from the selected  disk
file.
	To write to a file one does (UWRITE) with no arguments;  this
opens a file for writing with a name like 019RPG.LSP where 19 is  one
of your job numbers and RPG is your PN. ↑R is the flag for output  to
disk. Note that this does not shut  off output to the screen; use  ↑R
for that. Now one must name the output file by doing (UFILE FOO BAR),
which deletes any files  with the same name,  and renames the  output
file to FOO.BAR. As with EREAD, all print routines will now print  to
the selected file.
	Sometimes you may  encounter an error, and a  breakpoint will
occur.  Usually the information that  is typed will alert  you to the
cause of the error; if  not, you should read HELP.DOC[AID,RPG] for  a
description of the  debugging possibilities. However, to  get back to
the  toplevel of MACLISP  you type: ↑G or  (IOC G).   If the error is
unbound variable, one can say (RETURN '(<VALUE>)) to continue.
	A very useful file  to have is  HELP.FAS[MAC,LSP] if you  do:
(HELP),(FASLOAD HELP FAS DSK  (MAC LSP)), or COPY  this file to  your
directory and do (FASLOAD HELP) an "AUTOLOAD" property will be set up
for all of the interesting functions mentioned in  HELP.DOC[AID,RPG].
An AUTOLOAD property is a property  list entry which has a file  name
as its value. If one tries to apply the function with this  property,
and there is no such function, MACLISP will FASLOAD the file and then
try to apply the function once  more, the point being that this  file
should contain a FASLOADable definition of the function.
        A feature of  BIBOP is  that  EREAD  and  HELP  already  have
autoload   properties  set  up  from  the   outset,  so   that  doing
(EREAD FOO BAR) will work, and (HELP) will load the HELP features.
        At  this point you  may wonder  what FASLOAD  means. Normally
when one compiles LISP, one gets in  return a LAP file which is  then
read in with a  small resident assembler. This is  indeed possible to
do  in  MACLISP, but  the compiler  can  also assemble  the  LAP file
directly into  a  relocatable file  which  can  then be  loaded  into
MACLISP  with an  even smaller  resident loader.  The gains  are that
FASLOAD  file are an order of magnitude  smaller and load an order of
magnitude faster.
	The MACLISP compiler is called NCOMPLR  (for Number COMPiLeR)
and  is noted for  being the  "best" LISP  compiler in  existence. In
particular there are facilities for declaring the types of objects so
that a  fair amount of  open-coding is  possible; this is  especially
nice for numerical  computations (hence the "N" in NCOMPLR). For more
information on this either locate an old MACLISP manual or ask RPG or
WLS.
	To compile a file do:
		R NCOMPLR
		<target>←FN.EXT<(SWITCHES)>

The <target>  is optional  and defaults  accordding to the  switches.
Briefly the switches are:
	T 	Talk: verbose mode
	A	Assemble: take a .LAP file and assemble it
	F	Fasload: take a source file and compile & assemble it
	K  	Kill: take a source file and compile & assemble it but 
		kill the LAP file
The default names  are FN.LAP for a  compiled file and FN.FAS  for an
assembled file.  NCOMPLR understands ALIASes.
	Hopfully a new manual will appear from MIT, but for now there
are  three known manuals at  SAIL. RPG and  WLS have 1  each, and the
bookshelf which used to be  outside Lester's office has one. For  now
you    can    read    MACLSP.DM[UP,DOC]    HELP.DOC[AID,RPG],    and
LISP.NEW[AID,RPG], or ask RPG/WLS.
	LISP 1.6 Stanford AI Lab Lisp 1.6 System

The STANFORD A.I.  Lisp 1.6 System was originally an adaptation of one
developed by the Artificial Intelligence Project at M.I.T.  Since 1966,
that system has been largely rewritten by John Allen and Lynn Quam.

The documentation can be found on LISP16.WD[S,DOC]. LISP 1.6 can be run on
this system with the command R LISP
	MLISP Meta-notation LISP programming language

MLISP is a meta-notation for LISP.  It  makes LISP programs easier to read
and write.  MLISP is maintained by Dave Smith (DAV) and is described in AI
Memo AIM-135 (CS-179), available online as MLISP.DAV[AIM,DOC].

To interactively translate and execute MLISP expressions, type
	.R MLISP
	*<expression> ; <expression> ; ...

To translate and execute an MLISP program on a file, type
	.R MLISP
	*LISP;
	*(MLISP <filename>)

To translate an MLISP program and print out its LISP translation, type
	.R MLISPC
	*LISP;
	*(MLISP  <filename>  NIL)

To translate an MLISP program and compile it to LAP, type
	.R MLISPC
	*LISP;
	*(MLISP  <filename>  T)

A version of MLISP using UCI LISP exists.  Type "R MLISP.UCI" instead
of "R MLISP" or "R MLISPC".  However UCI MLISP does not contain the UCI
compiler, so programs to be compiled must first be translated to LISP
form and then compiled using the UCI compiler.
	MLISP2 LISP derivative programming language.

MLISP2 is a powerful AI language based on LISP/MLISP.  Capabilities
include backtracking, pattern-matching, and list-processing.  MLISP2
is maintained by Dave Smith and is described in AI MEMO 195,
available online as MLISP2.DAV[AIM,DOC].

To translate an MLISP2 program, type
	.R MLISP2 <core_size>
	*(PARSE <source_file>)

To translate an MLISP2 program and print out its LISP translation, type
	.R MLISP2.PRI <core_size>
	*(PARSE <source_file> <destination_file>)
		or
	*(PARSE <source_file> <destination_file> NIL)
The second alternative makes MLISP2 act like a compiler-compiler;
namely, it translates and prints without executing the translation.

To use MLISP2 (rather than LISP) as the top level notation, type
	.R MLISP2 <core_size>
	*(PARSE)
Exit from this mode by typing _EOF_
	ILISP UC Irvine Lisp

ILISP is the Stanford name for UC Irvine Lisp.  It is a version of
Stanford Lisp 1.6 with an in-core BBN-style editor and superior trace and
break facilities for debugging.  Detailed documention is available from
the Computer Science office at $3.50.  There is also a machine-readable
version of the documentation on IL.TVR[UP,DOC].

To run ILISP on the Stanford system, try R IL
	RLISP REDUCE Lisp

REDUCE is a program designed primarily for general algebraic computations
of interest to mathematicians, physicists and engineers.  However, its
source language is general enough to allow for a full range of LISP-like
symbolic calculations. A description of this source language is in
RLISP.ACH[UP,DOC]. Anyone interested in the general algebraic capabilities
of the system should consult the REDUCE 2 User's Manual {see
RLISP.ACH[UP,DOC]}.

Programming aids
	@ ATSIGN prepares a (compiler-like) cross-reference listing

Reference ATSIGN.RMS[UP,DOC]

Maintained by MRC

The @ program makes cross-reference listings of programs.  One or many
files can be listed together.  On each line will appear the file, page,
and line of the definition of a symbol referenced on that line.

Comparison listings can be made, containing only the pages changed since
the previous listing, for both programs and text-justifier output files.

* Menu:

* Basic::	Simplest usage of @, for programs.
* Output::	What @ output looks like, for programs.
* Text::	Simplest usage of @, for papers.
* Assembler::	What @ understands about assembler language.
* Lisp::	What @ understands about Lisp.
* Muddle::	What @ understands about Muddle.
* Quotes::	Quotes (') control whether files are listed.
* Switches::	What you can do with command line switches.
* Files::	What files are used, and their default names.
* Substitutions::  What to do when you move your source files.
ARPAnet programs

BH and MRC are good persons to help you with ARPA protocol if you have trouble
or fail to understand some of the following write-ups.

The follow programs are currently documented in the next few pages.
	HOST and HOSTAB		Examine the ARPAnet host table
	TELNET	Communicate with an ARPAnet host
	SUPDUP	Communicate with an ARPAnet host via SUPDUP display protocol
	OTN and NTN	OBSOLETE and ARCHAIC versions of TELNET
	IMSSS	Communicate with IMSSS
	FTP	File Transfer Program to transfer files over the ARPAnet
	HOSTAT	Report status of hosts on the ARPAnet
	IMPSTA	Report status of ARPAnet connections at SAIL
	TALK	Link to users at other hosts on the ARPAnet
	NETWHO	Report who is logged in on another host on the ARPAnet
	TIMES	Report on times from the network time servers
	DFTP and DCSTAT		Hack the CCA Datacomputer
	HOST and HOSTAB		Examine the ARPAnet host table

Written and maintained by MRC.

	Access:
		R HOST;host-name
		R HOSTAB

	If HOST is called with the host name in the command line,
	it will exit after completion.  Otherwise it will prompt
	for a new name; just ↑C out if done.

     The HOST program is used to look up information in the
host table about a particular host name.  This information
includes the official name of the host if the name is a
nickname, the host number (in both octal and decimal),
whether the host is a user or a server, the host machine and
the host operating system.

     When you run HOST, it will prompt with a sharp (#)
character.  Type the host name (or any abbreviation) you
want to look for.  The program will print all hosts (and
nicknames) which match the input specification.  When it is
done, it will prompt for another specification.  A null
specification types EVERYTHING (!!).

     Note that even non-unique abbreviations are accepted.
For example "SU" will print out ALL of the Stanford University
hosts.  This is different from TELNET, etc. which only accept
abbreviations which are unique to a single host.

     Note also the HOSTAB program, which pretty-prints the
host information using official names only in ascending
numerical order.  If you want a "host list", HOSTAB is
probably what you want.
HOST   DMP   1  3    302 20-FEB-78 2246 000   1MRC HOST   23-FEB-78 21-FEB-78 T14  
HOSTAB DMP   1  3    320 31-JAN-78 0159 000   1MRC HOSTAB 20-FEB-78 13-FEB-78 P1064>
	TELNET	Communicate with an ARPAnet host

Written and maintained by MRC.

	Access:
		TELNET socket-number,host-name
		OTN socket-number,host-name

	The <CONTROL><META>Q command (or <CTRL>↑ Q on non-displays)
	closes the network connection and exits from TELNET.

     TELNET is used to communicate with other hosts on the ARPAnet.
Using TELNET, a user at a terminal here can log into a remote host.
The socket number argument is optional and can be omitted.  An
octal host number is legal instead of a host name.

     The TELNET command defaults to using socket 27 or the new
TELNET protocol.  The OTN command defaults to using socket 1 or the
old TELNET protocol.

     TELNET is described in full detail in TELNET.MRC[UP,DOC]
TELNET DMP   1  3    2.6 07-FEB-78 2105 000   1MRC TELNET 23-FEB-78 21-FEB-78 P1070>
	SUPDUP	Communicate with an ARPAnet host via SUPDUP display protocol

Written and maintained by MRC.

	Access:
		SUPDUP host-name

	The [ESCAPE] I Q command closes the network connection
	and exits from SUPDUP.

     SUPDUP is used to communicate with other hosts on the ARPAnet
using the SUPDUP display protocol as described in RFC 734 in the
ARPAnet protocol handbook.  The SUPDUP protocol is a highly
efficient display protocol which originated as the internal protocol
in the I.T.S. timesharing system for controlling MIT's display
terminals.

     Currently only we (SU-AI) and the I.T.S. systems at MIT (AI, ML,
MC, and DM) have SUPDUP servers; consequently SUPDUP is used primarily
to run as a display at MIT from here.  SUPDUP runs only on displays.

     SUPDUP is described in full detail in SUPDUP.MRC[UP,DOC]
SUPDUP OLD   1  3    8.9 29-JAN-78 1734 000   1MRC SUPDUP 29-JAN-78 13-FEB-78 P1064>
SUPDUP DMP   1  3    8.9 20-FEB-78 0151 000   1MRC SUPDUP 23-FEB-78 21-FEB-78 T14  
	IMSSS	Communicate with IMSSS

Maintained by MRC.

	Access:
		R IMSSS

	The <CONTROL><META>Q command (or <CTRL>↑ Q on non-displays)
	closes the linker connection and exits from IMSSS.  DO NOT
	CALL OUT SINCE IT WILL HANG UP THE LINKER UNTIL THE IMSSSS
	PHANTOM REALIZES IT IS FREE.

     The IMSSS program is used to talk to IMSSS' Tenex system in much
the same way as TELNET talks to Tenex systems.

     This program also provides a method of performing file transfer
from IMSSS.  The program may be replaced with another that will use
the Dialnet protocol.

     The IMSSS program is documented in IMSSS.JBR[UP,DOC]
	FTP	File Transfer Program to transfer files over ARPAnet

Maintained by MRC and BH.

	Access:
		FTP host-name
		FTP copy-spec (read the documentation)

	The QUIT command closes the network connection and
	exits from FTP.

     FTP is used to transfer files over the ARPAnet.  How to do so is
too complicated to describe here, but briefly the most important
commands are:

	GET local-file ← foreign-file
to snarf a file from a remote site and
	STORE local-file → foreign-file
to push a file from here to a remote site.

     FTP is documented in the monitor command manual and in NEWS[UP,DOC].
NEWS[UP,DOC] contains much information regarding the new "one-liner"
FTP copy specs which should be read.
	HOSTAT	Report status of hosts on the ARPAnet

Written and maintained by MRC.

	Access:
		R HOSTAT

     HOSTAT reads the ARPAnet survey information from MIT-DMS and
pretty-prints it on the user's console, listing hosts on the network
and what their current status (up, down, refusing, etc.) is.  It takes
no commands and it exits when done.
	IMPSTA	Report status of ARPAnet connections at SAIL

Written and maintained by MRC.

	Access:
		R IMPSTA

	Typing any character causes the program to exit.  The
	CONTINUE monitor command will continue its operation.

     IMPSTA reports the status of all the ARPAnet connections here at
SAIL in real-time.  On displays, it uses display programs to provide a
real-time snapshot of the status of the IMP at any given moment.  The
program is cyclic; on DD's and III's it updates every second, on DM's
it updates every 5 seconds.  On non-displays it merely prints the entire
status every 20 seconds.

     The information output by IMPSTA and the format it is in is
documented in IMPSTA.MRC[UP,DOC].
	TALK	Link to users at other hosts on the ARPAnet

Written and maintained by MRC.

	Access:
		TALK;user%host

	The <CONTROL><META>Q (or <CTRL>Z on non-displays) character
	will break the link and network connection and exit from TALK.

     The TALK program allows users to link to a user on another host
on the ARPAnet.  The link is set up as character-at-a time.  On displays,
one can switch to the line editor with the <META>L command, or switch
back to character-at-a-time with the <CONTROL><META>L command.

     Any host which supports RS EXEC (ie, Tenex, I.T.S., Multics, and
SAIL sites) will support network links.
TALK   OLD   1  3    1.5 09-JAN-78 0446 000   1MRC TALK   09-JAN-78 23-JAN-78 P1050>
	WHO	Report who is logged in on another host on ARPAnet

Written and maintained by MRC.

	Access:
		R WHO;host

     The WHO program prints a short status summary of the users
who are logged in at that remote host.  Any host which supports the
RS EXEC protocols will support network WHO's.
	TIMES	Report on times from the network time servers

Maintained by MRC.  Original version by KLH%SRI-KL.

	Access:
		R TIMES

     The TIMES program is a demonstration program of the ARPAnet time
protocol.  It calls up the hosts which support the ARPAnet time
protocol, asks them for their idea of the time, and prints it out.
Currently these hosts are: AMES-67, MIT-AI/ML/MC/DM, SU-AI.
TIMES  DMP   1  3    273 12-FEB-78 0941 000   1MRC TIMES  21-FEB-78 21-FEB-78 P1070
	DFTP and DCSTAT		Hack the CCA Datacomputer

Maintained by MRC.

	Access:
		R DFTP
		R DCSTAT

	The QUIT command to DFTP (which requires two carriage returns
	for confirmation) closes the network connection and exits from
	DFTP.

     DFTP is the "Datacomputer File Transfer Program" and is used to
store and retrieve files from the CCA Datacomputer.  DFTP is documented
in detail in DFTP.MRC[UP,DOC] and this document MUST be read by any
prospective user of DFTP.

     DCSTAT prints a "prerecorded" status message about the current
state of the Datacomputer from CCA and exits.
DFTP   OLD   1  3    9.0 23-NOV-77 2354 000   1MRC DFTP   07-DEC-77 12-DEC-77 P1022>
	DDHACK	To control DD displays from remote ARPA hosts

Maintained by DEA

To use type R DDHACK

Documentation in DDHACK.DOC[I,DEA]

DDHACK implements the TELNET protocol and talks directly to the remote
host over the network.

When DDHACK starts, it prompts for a host, and the user may type in any host
name (host numbers and special sockets are not implemented).  DDHACK will connect
to the host using the regular TELNET ICP socket.

	The program provides access to any one of the 16 page printers available
to a job running on a display terminal.  The user, or the program running
on the PTY may, through issuing appropriate commands, select a page printer
to recieve text, display selected page printers, and control the screen position
and the number of lines in each page printer.

	The program also provides 10 buffers for inserting data disc display
programs.  These programs are constructed out of text sent to the program
from the PTY.  The user, or the program, may define a screen "window" associated
with each buffer by specifying the top line of the window, its width in characters
and its starting column.  Commands may be issued by either program or user
to run the display programs for selected windows at any time.  Data can be
moved from one buffer to another.  When data being sent to a selected buffer
causes the buffer to overflow, the next buffer in numeric sequence is selected
as the current buffer with the same characteristics as the former buffer,
and the rest of the data is transfered to the newly selected buffer.
[In the future, the user may designate certain buffers as "protected"]

Debugging Aids

DDT    DMP   1  3    3.9 10-MAY-76 2338 000 ACTREG DDT    08-DEC-76  25-MAY-76 P698>
UEDDT  DMP   1  3    4.9 05-DEC-76 1745 000   1JBR UEDDT  08-DEC-76  07-DEC-76 T20  
FRAID  DMP   1  3    8.1 30-NOV-76 2006 000   1JBR FRAID  09-DEC-76  04-DEC-76 P805 
PSEG   DMP   1  3    8.9 09-DEC-73 0151 000   XAIL COPY   06-JAN-76  05-JUL-75 P528>
RAID   DMP   1  3    7.9 30-NOV-76 2004 000   1JBR RAID   09-DEC-76  04-DEC-76 P805 
.sect Cross Reference Programs
ATSIGN DMP   1  3   15.0 12-OCT-76 2018 000   1 RG ATSIGN 04-DEC-76  23-OCT-76 P781>
CREF   DMP   1  3    1.7 30-JUL-76 1343 005   1JFR LOADER 24-NOV-76  16-AUG-76 P743>
GLOB   DMP   1  3    1.1 15-SEP-72 1408 000 CSPSYS        27-OCT-76  05-JUL-75 P527>
GRUMP  DMP   1  3    1.5 28-SEP-76 2022 000   1JFR GRUMP  09-DEC-76  09-OCT-76 P774>
SOLO   DMP   1  3    1.4 10-JUL-76 0351 000   1JBR SOLO   02-DEC-76  25-JUL-76 P731>
	RAID	An interactive debugging aid (also FRAID).

Maintained by JEFF Rubin

Reference: RAID.PMP[S,DOC]

To use: Load your program using the /V or /H switch or use the SNAIL
	commands, PREPARE, TRY or DEBUG (see below).

    RAID is an interactive debugging program that uses the displays
and allows dynamic monitoring of memory locations.  RAID lives in
core with your program and allows you to do various things with and
to your program, such as stop at selected places and examine your
core image, etc.  The major advantage of RAID over DDT is that RAID
uses the displays to give you a constantly updated view of selected
locations in core.  It also can be used from a teletype, typing only
those lines that have changed since last time it wanted to display
something. 

    It is possible to use RAID in a stand-alone fashion, for writing
small programs on the spot, or finding the octal representation of
something, for example.  The monitor command R RAID
calls in a fresh copy of RAID and starts it up.

    SNAIL knows about RAID; the PREPARE, TRY, and DEBUG commands cause
RAID to be loaded with your program.  This saves you the trouble of
remembering the loader switches.

    The loader will load RAID with your program if you use the /V or
/H switch.  This saves you the trouble of explicitly loading
RAID.REL[1,3].  For example if the binary file for your program was
called FNORP, the loader command /VFNORP$ (where $ means alt-mode)
would cause the loader to load RAID with your program.  If you put
this switch after the name of your file, it is also necessary to tell
the loader to load your program symbols; this is done with the /S
switch.  Here are some sample commands to load FNORP:

/SFNORP/V$	  (Load symbol table, then RAID)
/VFNORP$	  (Load RAID, then FNORP, then symbol table)

    It is sometimes a good idea to put RAID after all the code, so
addresses in the core image will be close to where they would be
without the RAID. This helps if you are debugging a copy without RAID
in parallel to one with RAID.

    Once you have your program and RAID in core, you must get into
RAID. This is done by typing DDT<cr> to the system.  This is because
the system can't tell the difference between RAID and DDT. It is also
possible to enter RAID by hitting a breakpoint (ways to set and clear
breakpoints are discussed later) or by jumping to RAID's starting
address (this is the global symbol DDT, and it can also be found in
the right half of JOBDDT).

    When RAID is entered, the display screen flashes and the RAID
display will appear.  The duplexing of keyboard input moves down to
the bottom of the screen.  RAID is now ready to accept commands.  

FRAID

    There is also a version of RAID for examining files; it is called
FRAID.  The monitor command R FRAID calls in a fresh copy and starts
it up.  FRAID first asks if the file to be examined is a DMP file (if
so, the starting address will be noted and FRAID will look for a
symbol table) and whether the file is to be modified.  If FRAID is
run in file-modify mode, all changes made in the core version of the
file are immediately written onto the disk. 

    All of the commands that run a job and set and clear breakpoints
are illegal in FRAID.  Furthermore, if the file is a dump file, locations
0 through 73 are non-existant.  There are a few commands that work only
in FRAID or which have different meanings in FRAID.  These are:

  αS	Simulates setting $IO to -1.  Causes I/O instructions to be typed out

  βS	Simulates setting $IO to 0.  Causes I/O instructions to not be typed out

  εE	Exits from FRAID.  RELEASES the file after finishing all modifications.
Conversion Programs

.chapter publications and fonts
.sect Formatting Programs
POX    DMP   1  3   25.9 19-OCT-76 0242 000   1REM PXGOOD 09-DEC-76  30-OCT-76 P785>
.reference(XGP Programs,POX)
PUB    DMP   1  3   45.0 22-AUG-76 0002 005   1JFR PUB    09-DEC-76  08-SEP-76 P756>
PUB2   DMP   1  3   11.1 30-JUN-76 2303 000   1JFR FRAID  09-DEC-76  11-JUL-76 P720>
RUNOFF DMP   1  3    2.1 12-DEC-74 1519 000  11 BO RUNOFF 20-OCT-76  05-JUL-75 P527>
XAP    DMP   1  3   15.1 23-MAR-74 2104 000   1BGB XAP    16-OCT-76  05-JUL-75 P528>
.reference(XGP Programs,XAP)
XIP    DMP   1  3   12.9 01-JUL-76 0907 000  MAJAM XIP    07-DEC-76  11-JUL-76 P720>
.reference(XGP Programs,XIP)
TXTF80 DMP   1  3   1023 20-MAR-72 2221 000 F80RHT        06-JAN-76  05-JUL-75 P527>
COLIST DMP   1  3    3.9 14-NOV-74 1718 000 ACTREG COLIST 05-DEC-76  05-JUL-75 P527>
.sect XGP Programs


COMBIN DMP   1  3    6.1 23-DEC-75 2001 000 XGPTVR COMBIN 06-DEC-76  05-JAN-76 P632>
CRAM   DMP   1  3    1.9 21-JAN-74 2245 000   ISRS COPY   24-SEP-76  05-JUL-75 P527>
F      DMP   1  3   32.9 08-NOV-76 1641 005 XGPTVR F      20-NOV-76  20-NOV-76 P800>
FCOPY  DMP   1  3   13.9 11-JUL-76 0454 005 XGPTVR FCOPY  09-DEC-76  25-JUL-76 P731>
FOLMRG DMP   1  3   10.2 01-DEC-76 2109 000 SHOREF FOLMRG 08-DEC-76  02-DEC-76 T16  
FREEFO DMP   1  3    5.9 10-JAN-75 1705 000   SLES FREEFO 05-SEP-76  05-JUL-75 P527>
INDEX  DMP   1  3    4.6 03-DEC-74 1713 000  NS ME INDEX  06-SEP-76  05-JUL-75 P528>
KWIC   DMP   1  3   36.9 07-FEB-74 1852 000   SLES KWIC   24-OCT-76  05-JUL-75 P527>
TENGWR DMP   1  3    6.3 13-OCT-76 0620 000 234DON TENGWR 02-DEC-76  30-OCT-76 P785>
TJ6PUB DMP   1  3   12.6 06-JAN-75 1407 000 MITMLM TJ6PUB 23-JUN-76  05-JUL-75 P528>
XEROX  DMP   1  3    6.1 25-MAR-73 1814 000   DLES XEROX  08-NOV-76  05-JUL-75 P527>
XGPTYP DMP   1  3    6.5 19-JUL-76 1829 000   SLES XGPTYP 08-DEC-76  01-AUG-76 P735>
XGPVID DMP   1  3   13.9 16-AUG-73 1143 000 GEMTVR COPY   01-OCT-76  05-JUL-75 P528>
File duplicating programs

COPY

A major group of commands runs the COPY program.  Their arguments are
generally in the form "new-file ← old-file":

  COPY     copy a file
  TRANSFER copy and delete the original
  RENAME   rename a file or change protection

The following COPY commands imply  a destination, and take just one  or more
input file specifications (separated by commas if more than one):

  DELETE   delete a file
  TYPE     copy to the terminal
  LIST     copy to the line printer (SPOOL, below, is preferred)
  PRINT    copy to the line printer, different format options
  XGPLIST  copy to the Xerox Graphics Printer (XSPOOL is preferred)
  DIRECTORYtype file directory

The COPY manual  explains these commands  fully, along with  various options
specified in the argument list; see Appendix 2 of the Monitor Command Manual.

While it is possible to use the copy command to make listings, this should
be done only on an emergency basis.  Use the SPOOL commands (see below).

SPOOL

Since only one  job can use the  line printer or XGP  at a time,  if several
people want  to make  listings at once  there is  a scheduling  problem.  To
solve this,  the system allows  listing requests to  be stored on  disk, and
processed one at a time by spoolers which actually control the LPT  and XGP.
The system commands for this function are:

  SPOOL    request line printer listing of specified file(s)
  XSPOOL   request XGP listing of specified file(s)
  UNSPOOL  delete a spooler request
  QSPOOL   type out spooler status and queues

The  SPOOL  commands also  allow  editing  options to  be  specified  in the
argument list; see Appendix 3 of the Monitor Command Manual for details.
	COPY

Reference: COPY.RPH[S,DOC] or Monitor Command Manual Appendix 2.

COPY  reads data  from the  logical file(s)  indicated by  the  source term,
performs any operations requested by the switch term(s), and writes the data
on  the  logical  file  indicated  by  the  destination  term.   Any listing
information goes to the list term.

Dev and p,pn are sticky in the source; that is, if they are absent, the last
one specified is used.   The default device is  DSK and the default  p,pn is
blank (those of the current job).

A single * may be substituted for any of the following:

  filnam
  ext
  p
  pn

A * in the source term means "all."  A * in the destination term means "same
as in source file being transferred."

If filnam.ext  is absent in  the destination term,  *.* is assumed.   If the
destination  filnam.ext are  specified (no  *'s), all  source files  will be
concatenated into one big file with that name.

For example:

COPY DING←FOO,BAZ

would cause a file named DING  to be created on your disk area  comprised of
the files FOO and BAZ from your  area.  If filnam.* or *.ext is used  in the
destination term, the source files  will be copied onto the  destination one
by one with the new filename or extension.  <destination term>← may  be left
out and DSK:*.*← will be  assumed.  For source terms with  directory devices
you must specify the filnam.ext.

If you try to write on top of a file which already exists, you will be given
the option  of deleting  it or  not.  If any  of the  source files  you have
specified do not exist, you will be informed and given the proper option.

If a string of source descriptors is specified, the string is  executed from
left to right.

You cannot write a  file in two different modes  (e.g.  FIL1←TTY:,DSK:FIL2).
However FIL1←TTY:,DSK:FIL2/ASCII is quite acceptable (/ASCII causes the data
mode to be 0).  Data modes are explained in the UUO Manual.

The <spec  term> construct causes  the scanner to  continue scanning  in the
file specified by the term.  The term must indicate a unique file.  When end
of file occurs the scanner again reads from the terminal.  No spec terms may
appear  in the  file.   Switches preceding  the  "@" are  treated  as sticky
switches.  Switches following  the "@" are  treated as sticky  switches only
while reading from  the indirect file.   In a sense  the indirect file  is a
"program block."  Upon leaving the  "block" all defaults are reset  to those
in force just before the "@".   A device name and p,pn may precede  the "@",
in which case the defaults are  changed to those, but no operation  is done.
The  device  and p,pn  used  in the  spec  term do  not  affect  the current
defaults.

The \<filehack selector> construct for a term is a special shorthand feature
to  allow commonly  referenced files  which would  normally require  a large
amount of typing to  be entered quickly.  The  following is a list  of legal
filehack selectors and what they are short for (<prg> stands for the current
programmer name right justified).  Only enough letters to  uniquely identify
the name among those in this list need be typed.

  Filehack
  Selector File selected       What for?

  MSG      <prg>.MSG[2,2]      Current user's mail file
  MAIL     <prg>.MSG[2,2]      Current user's mail file
  PLAN     <prg>.PLN[2,2]      Current user's plan file
  PLN      <prg>.PLN[2,2]      Current user's plan file
  NAP      <prg>.NAP[2,2]      Current user's NS notification file
  NS       <prg>.NAP[2,2]      Current user's NS notification file
  RPG      *.RPG[*,<prg>]      All of current user's RPG files
  OPTION   OPTION.TXT[*,<prg>] All of current user's option files
  DOWN     MAINT.TXT[2,2]      System downtime forecast
  DIGEST   DIGEST[2,2]         Latest A.P. news digest
  NOTICE   NOTICE.TXT[2,2]     System message file
  GRIPES   GRIPES.TXT[2,2]     System gripe file
  DAY      DAY.TXT[2,2]        Daily birthday or holiday message

The ∂{<pn>|*} construct  is another form  of shorthand for  referencing MAIL
files  (see   Appendix   4  of   the  Monitor   Command   Manual,  in   file
MONCOM.BH[S,DOC]).   If no  argument follows the  ∂ then  the current user's
mail file is indicated.   If <pn> is used,  it means that user's mail  file.
And lastly, if *  is used the file NOTICE.TXT[2,2] is  selected (this is the
public mail  file).  The default extension (.MSG) and PPN ([2,2]) implied by
∂ can  be explicitly  overridden, e.g., ∂PRG.PLN  will get  user PRG's  plan
file.

There is a page counter in COPY which monitors ASCII output for  form feeds.
When a form feed is encountered, the counter is incremented.  If a page list
is used in a term, N is taken as the starting page of this output and  M (or
N  if M  is absent)  as the  ending page.   Output is  only active  when the
counter is within the range of the page list (e.g., LIST COPY(21) would list
page 21 of  the file COPY).   When the end of  the first term  is exhausted,
control  is  transferred  to  the  next term,  and  so  on  until  the right
parenthesis is reached, at which point output ceases.  If more than one file
is indicated,  the page  list is re-scanned  for each  one.  Page  lists are
never sticky.  An  asterisk (*) may  be used in a  page list instead  of the
final page number, to denote the last page, e.g., LIST COPY(3:*)  would list
all but the first two pages of the file COPY.

Switches will  be described in  a section  of their own.   See /LIST  for an
explanation of "list term."

Logical device  names may be  used, but all  switches apply to  the physical
device.  The following are legal physical devices for the copy command:

            DSK     UDPn    DTAn    MTAn    TTYn
            LPT     XGP     PTR     PTP     TTY

When the  special character ↓  (↑A on Teletypes)  appears, the  scanner will
read the line character-by-character without interpretation until the next ↓
(or  ↑A).   This is  useful  for allowing  non-alphameric  characters  to be
included in filenames, e.g., editor or spooler temporary files.

For numeric input there is always a default radix (either decimal or octal).
Sometimes, however,  it is desirable  to force one  or the other.   A number
preceded  by  a single  quote  is  always interpreted  in  octal.   A number
preceded by a double quote is always interpreted in decimal.
	SPOOL, XSPOOL, QSPOOL and UNSPOOL, [LIST] and [XSPL]

Reference: SPOOL.REG[UP,DOC] (updated 19-NOV-77)
	   Monitor Command Manual Appendix 3 (not completely up-to-date)

Spooling  provides a  method  of producing  line printer  listings  of files
without the usual disadvantage of tying up a user's job while the listing is
actually being done and without usurping the position of others using SPOOL.

(The following is taken from page 2 of SPOOL.REG[UP,DOC]

This file  documents the entire  spooler system  except for the  subroutines
available  for  making   spooler  command  files.    Those  subroutines  are
documented separately in the file SPSUB.REG[UP,DOC].  Documented here are:

	SPOOL	- Accept commands to spool files to the LPT.
	XSPOOL	- Accept commands to spool files to the XGP.
	QSPOOL	- Spooler status report program
	UNSPOOL	- Deletes spooled requests. Modifies PRINTR behavior
	[LIST]	- The actual LPT listing program.
	[XSPL]	- The actual XGP listing program.

To use the spooler,  a user must create commands  for it.  A command  is the
name of a file to list, and control switches.  Spooler commands  are created
by the monitor commands SPOOL and XSPOOL.

As an example of spooling, the monitor command

SPOOL SPOOL.REG[UP,DOC]

will cause the LPT spooler to list the file SPOOL.REG[UP,DOC].

Spooled listings are preceded by  a title page (except see  /NOTITLE below),
used to make  it easy to separate  different listings.  This  title includes
the file identifier,  the name of  the requestor and  his project-programmer
name, the current  date and time,  and the date and  time when the  file was
last written.   Programmer names are  read from the  file FACT.TXT[SPL,SYS].
Project  names   (of  which  there   are  few)  are   read  from   the  file
XFACT.TXT[SPL,SYS].

In the discussion below, "SPOOL" is used to mean either the command SPOOL or
the  command XSPOOL,  except as  noted.  SPOOL  makes requests  for  the LPT
spooler; XSPOOL makes requests for the XGP spooler.

To have  the spooler  make a  listing the  user must  tell the  spooler what
file(s) to print.  This easiest way to tell the spooler what to do is by the
monitor command SPOOL.  This command consists of the word SPOOL  followed by
the  name(s) of  the file(s)  to  be listed.   File names  are  separated by
commas.  Each file name may  be followed by switches, explained  below.  The
program SPOOL will send commands to the spooler.

Files to  be spooled are  specified in the  conventional way, by  file name,
extension, and optionally project-programmer name.

Asterisk, *,  may be  used to allow  matching of  any file  name, extension,
project name,  or programmer  name.  (RPG, DMP,  and REL  files will  not be
matched by * in the extension).

If no extension is  specified and the  file is not found,  it is then  tried
with .LPT or .XGP as the extension for SPOOL and XSPOOL respectively.

Switches are allowed either preceding or following the file  name.  Switches
that precede the name are sticky and will be applied to subsequent names.  A
switch consists  of a slash,  the switch name,  and sometimes,  a parameter.
For example, /REPEAT=5.

The following switches are available.  Note that most switches occur  in two
senses (e.g., delete and nodelete).  This allows an explicit switch  in some
term to override a sticky switch.

  Switch      Action

  DELETE      DELETE this file after printing.  The file protection
   NODELETE   of  this file  must be low enough so that the spooler
              can delete it.  The file must belong to the requestor
              (alias not allowed).
  NONUMBER    Omit SOS line numbers  from  the  listing.  "N" is an
   NUMBER     accepted abbreviation for NONUMBER.
  FORTRAN     The first character of each  line is interpreted as a
   NOFORTRAN  FORTRAN carriage control character.
  LPT100      The spooler will open the LPT in mode 100, instead of
   LPT0       the usual mode 0.  This changes some character codes.
  HEADING     Print a page heading at the top of each page.  "H" is
   NOHEADING  accepted as HEADING.   HEADING is the default for all
              files, except:
                  LST or DOC extensions,
                  any file from any area with programmer = DOC.
              The heading includes date, time,  filename, and  page
              numbers.
  TITLE       Precede the listing with a title page.   TITLE is the
   NOTITLE    default for all files.
  NARROW      Center the title page to fit an 8.5 inch wide page.
   NONARROW
  RECOPY      Copy the file to  [SPL,SYS]  and list the copy.  This
   NOCOPY     allows  the file to be edited while the listing is in
              progress.
  REPEAT=n    Make n copies of the listing.  (REPEAT is NOT sticky)
              COPIES=n is like REPEAT=n.
  EXTRA=n     Insert n extra line feeds in the listing  after every
              line feed in the file.  (EXTRA is NOT sticky).
  DUMP        Octal listing.  Data will be printed  as  octal  full
   NODUMP     words.  (OCTAL is an equivalent switch.)
  NOFF        Each line feed in the file is translated to  '177&'21
   FF         which causes single spacing with no form-feed between
              pages.
  NOWARN      Suppress "spooling done" typeout after listing.
   WARN
  ASK         Before making the spool command, SPOOL will  type the
              file name and wait for the user to answer with "Y" to
              spool the file.  (This is useful with *.* terms).
  HOLD=hhmm   The listing will be held in the queue  until the time
              specified by hh hours, mm minutes.   (24-hour time is
              assumed.)  If hhmm is prior to the current time, hhmm
              tomorrow is assumed. HOLD is not allowed with XSPOOL.
  MODE=n      Open the file in mode n (n is octal).

File specifications may be read  from an auxiliary file by including  in the
command line the name  of the auxiliary file  preceded by @.  This  file may
include file names and switches.
	TENDMP
	6TO10
Communication Programs
.chapter Communication -- The Mail System
MAIL   DMP   1  3   10.1 05-DEC-76 1857 000   1 ME MAIL   09-DEC-76  07-DEC-76 T20  
CANCEL DMP   1  3    942 06-FEB-76 1602 000   1 ME LOADER 08-DEC-76  23-FEB-76 P655>
RCV    DMP   1  3    4.5 27-SEP-76 1643 000   1 ME RCV    09-DEC-76  09-OCT-76 P774>

.chapter Conecting to Other Systems
.sect ARPA network
⊗c  DFTP   DMP   1  3    6.8 07-DEC-76 0414 000 NETMRC DFTP   09-DEC-76  07-DEC-76 T20  
⊗c  FTP    DMP   1  3    9.6 05-DEC-76 1856 000   1 ME FTP    09-DEC-76  07-DEC-76 T20  
⊗c  RSEXEC DMP   1  3    2.5 13-SEP-76 0025 000   GGFF RSEXEC 07-DEC-76  28-SEP-76 P767>

HOST   DMP   1  3    1.2 05-DEC-76 1855 000   1 ME HOST   07-DEC-76  07-DEC-76 T20  
.reference(Information on the ARPA net,HOST)

.sect Other Sites
⊗c  DIAL   DMP   1  3    2.5 14-JUN-76 0150 000   1JBR DIAL   09-DEC-76  27-JUN-76 P712>
   [P,TED]
HANG   DMP     42 28-NOV-73 1504
⊗c  IMSSS  DMP   1  3    2.8 26-APR-76 0356 000   1JBR IMSSS  09-DEC-76  10-MAY-76 P692>
cards /ibm 360
lots
	MAIL
MAIL   BH   UPDOC   19.1 21-JUN-76 1551 000   1 ME E      08-MAR-78 05-JUL-76 P717>
MAIL   OLD   1  3   10.2 08-SEP-77 1319 000   1 ME MAIL   14-FEB-78 27-SEP-77 P977>
MAIL   DMP   1  3   10.9 20-FEB-78 1937 000   1 BH MAIL   23-FEB-78 21-FEB-78 T14  
	FTP	EFTP
Demonstration programs
.chapter games
.sect Intelligent Games
.ssect1 Chess
.ssect1 Other Intelligent Games
TECH2  DMP   1  3   75.9 23-JUL-74 0228 000 105SGK TECH2  05-DEC-76  05-JUL-75 P527>
JOTTO  DMP   1  3   22.6 18-NOV-72 1801 000   FRPH JOTTO  09-DEC-76  05-JUL-75 P527>
DOC    DMP   1  3   17.0 20-AUG-70 1432 000               04-DEC-76  08-SEP-75 P570>
DOCTOR DMP   1  3   47.0 23-NOV-76 1145 000 MACLSP DOCTOR 23-NOV-76  04-DEC-76 P805 
GO     DMP   1  3   25.6 21-MAR-73 1255 000  GOMAL GO     05-DEC-76  05-JUL-75 P527>
CHECKE DMP   1  3   26.7 11-JUL-72 1958 000 CH2SMG        12-NOV-76  05-JUL-75 P527>
KALAH  DMP   1  3   11.2 05-JUL-74 1418 000   1 BH COPY   14-NOV-76  05-JUL-75 P527>
IIIGO  DMP   1  3   20.6 21-MAR-73 1256 000  GOMAL IIIGO  06-NOV-76  05-JUL-75 P527>
DCHESS DMP   1  3    9.5 15-JAN-74 2211 000 NETGUE COPY   09-DEC-76  05-JUL-75 P528>
LOA    DMP   1  3    4.5 23-MAR-72 0834 000   1GJA        23-AUG-76  05-JUL-75 P528>
.sect Graphics
.ssect1 III Graphics
.ssect2 III Games
SW     DMP   1  3    1.7 29-AUG-76 1938 000  SWREG FRAID  28-NOV-76  28-SEP-76 P767>
SWR    DMP   1  3    3.2 22-MAY-76 2014 000   1JBR FRAID  09-DEC-76  07-JUN-76 P704>
DF     DMP   1  3    3.3 26-JUN-76 1912 000   1PMF DF     06-DEC-76  11-JUL-76 P720>
3DFLY  DMP   1  3   11.6 27-APR-75 2042 000 CARHPM COPY   09-DEC-76  05-JUL-75 P527>
BROOM  DMP   1  3    928 17-AUG-72 0112 000   1GJA        19-NOV-76  05-JUL-75 P527>
.ssect2 III Displays
FRWK40 DMP   1  3    2.1 04-JUL-76 1130 000 THERHT FRWK40 10-NOV-76  18-JUL-76 P725>
PETAL  DMP   1  3   10.0 13-AUG-72 1812 000 SLSDCS        09-DEC-76  05-JUL-75 P527>
DPYCLK DMP   1  3    384 15-JUN-71 0910 000               07-NOV-76  05-JUL-75 P527>
DPYHAX DMP   1  3    4.9 17-MAR-73 1458 000   2TVR DPYHAX 06-DEC-76  05-JUL-75 P527>
CHACK  DMP   1  3    768 15-MAR-70 0534 005               06-DEC-76  05-JUL-75 P527>
DIZZY  DMP   1  3     46 19-AUG-72 0804 000 MUSTVR        03-DEC-76  05-JUL-75 P527>
ARMDPY DMP   1  3   25.1 08-JUL-76 1328 000 GEMTVR FRAID  06-DEC-76  25-JUL-76 P731>
REPENT DMP   1  3    290 07-AUG-72 0039 000  SWREG        06-DEC-76  05-JUL-75 P527>
AMOEBA DMP   1  3    512 15-MAR-70 0537 000               06-DEC-76  05-JUL-75 P527>
DAZZLE DMP   1  3   10.0 28-FEB-73 0729 000 XGPTVR DAZZLE 03-DEC-76  05-JUL-75 P527>
HYPNO  DMP   1  3    768 19-JUL-72 1658 000   SREG        06-DEC-76  05-JUL-75 P527>
FIRWRK DMP   1  3    654 04-JUL-76 1045 000 THERHT FIRWRK 06-DEC-76  18-JUL-76 P725>
ADH    DMP   1  3    2.0 16-APR-74 0030 000 ACTREG ADH    06-DEC-76  05-JUL-75 P527>
.ssect1 Data Disc Graphics
LIFE   DMP   1  3    9.4 08-MAR-76 0530 000   1PMF LIFE   04-DEC-76  22-MAR-76 P669>
RECKNU DMP   1  3   16.9 13-NOV-76 0154 000   1PMF RECKNU 06-DEC-76  04-DEC-76 P805>
.ssect1 Hard Copy Graphics
HEART  DMP   1  3   10.8 09-DEC-73 1608 000   SRHT HEART  23-NOV-76  05-JUL-75 P527>
BILLBD DMP   1  3   10.0 15-MAR-70 0537 005               08-NOV-76  05-JUL-75 P527>
.sect Other Diversions
LITCRY DMP   1  3    1.9 06-DEC-75 1959 000   1RCC LITCRY 29-MAY-76  22-DEC-75 P623>
LESCAL DMP   1  3    4.6 30-DEC-74 0343 000   SLES LESCAL 22-NOV-76  05-JUL-75 P527>
.reference(Information about the world, LESCAL)
PRN    DMP   1  3    1.2 30-APR-74 1743 000  SWREG PRN    09-DEC-76  05-JUL-75 P527>
ORACLE DMP   1  3     84 01-NOV-75 0419 044   1MJC COPY   25-NOV-76  17-NOV-75 P605>
LIMRIK DMP   1  3    1.2 19-NOV-74 2244 000   1 BH LIMRIK 08-DEC-76  05-JUL-75 P528>
	Chess
CHESS  AKC  UPDOC    1.0 01-JUL-76 1355 000   1RSS E      02-MAR-78 11-JUL-76 P721>
TECH2  DMP   1  3   75.9 23-JUL-74 0228 000 105SGK TECH2  03-FEB-78 05-JUL-75 P527>
	An old version of a chess program written by Alan Baisley (AGB @ MIT-AI)
	find no other source of amusment.
	Checkers
	Go
GO     DON  UPDOC    512 20-FEB-77 0931 000   1DON E      21-FEB-78 10-OCT-77 P987>
GOGAME DMP   1  3   19.1 13-MAR-77 1748 000   1DON GOGAME 21-FEB-78 29-MAR-77 P871>
SAMPLE GO    1  3    255 13-FEB-77 1023 000   1DON GOGAME 17-FEB-78 26-FEB-77 P857>
	KALAH	Modern version of WARI, an ancient  African game

Brian Harvey  probably knows  as much  about this  program as  anyone
around although John McCarthy was  early involved in the  programming
of Kalah at MIT.

See KALAH.AKC[UP,DOC]

	To start the program type	R KALAH .
	Type QUIT to terminate the game

	Kalah is a game played by two persons.  The board consists of
12  pits (or holes) 6 on each side.  In addition there are two larger
oval shaped holes called kalahs.  The pits  and  kalahs  may  contain
stones  -  all  stones  are alike.  The starting board position has 6
stones in each pit and the kalahs are empty (while learning the  game
it  is better to start with a smaller number of stones e.g. 3 in each
pit). A move consists of picking up all the stones in any pit on your
own  side  and moving counterclockwise dropping one stone in each pit
or kalah as you go along (you never drop a stone into the  opponent's
kalah).   A stone, once played into a kalah is never moved out.   Two
simple rules help to make the game interesting (and  nontrivial).  1.
If the last stone falls into your kalah you play again.    2.  If the
last stone falls into an empty pit on your own side you  capture  all
stones  in  the opponent's pit opposite your pit and place your stone
and the captured stones into your kalah (you don't get  to  go  again
after  a  capture,  and  you  can't  capture if the opponent's pit is
empty).

	The objective of the game is to get more stones in your kalah
than the opponent can get in his.  The game ends if any one gets more
than  half the total number of stones into his kalah or if anyone has
no stones left in any of his pits (even if it is his opponent's  turn
to  move)  in  which  case  his opponent gets to keep all outstanding
stones.


	All commands are terminated by a carriage return.  In  almost
all  cases  it  is  sufficient  to  type  the  first character of the
command.

	Before each game the program asks three questions.
	(a)	START WITH 1,2,3,3,5 OR 6?
	(b)	WHAT LEVEL C,B,A, MASTER OR TOURNAMENT?
	(c)	DO YOU WISH TO START?

	The  program  can  play  at any of 5 levels.  At both C and B
levels it makes its moves almost instantaneously.   Level  A  is  the
standard setting (about 3 sec).  Master and tournament level settings
take about 6 and 15 sec compute times per move.   If you can beat the
tournament level consistently you may apply for a grandmaster ranking
(there is, as yet, no kalah grandmaster).
	If  the  computer's  move  requires several steps, after each
step the program types
		PLEASE TYPE <CR>
asking you to type a carriage return after after examining the move.


The game will be saved on file KALAH.OUT on your area.

KALAH  DMP   1  3   11.2 05-JUL-74 1418 000   1 BH COPY   21-FEB-78 05-JUL-75 P527>
KALAH  AKC  UPDOC    1.3 06-OCT-72 1907 000  UPDOC COPY   08-MAR-78 05-JUL-75 P533>
Recreation Programs
LINS   DMP   1  3    384 03-JAN-78 0131 000 105SGK FRAID  23-FEB-78 17-JAN-78 P1046>
	This program is the alternative source of system fortunes.  It
	is invoked by setting the COOKIE option to Login, and says something
	cute each time you log in.  It may be run by itself if the user can
	find no other source of amusment.
	ADVENTURE

	(EYEWASH)
	PARRY	A model paranoid			Sept. 1977

A natural language "understanding" program that pretends to be a paranoid if
you pretend to be a psychiatrist.  To run, say "R HARRY" and answer the
various questions about options any way you like, but type in upper case.
One good set of answers is: "Y", "M", "N", "N", "Y", "N".

Programmer:	KMC, BLF, etc.
Source file:	unknown (in MLISP)
Documentation:	William Faught, "Motivation and Intensionality in a Computer
		Simulation Model", Memo AIM-305, Thesis: Ph.D. in Computer Science,
		September 1977.
	CRYPTO	A bookkeeping program for use in solving puzzles.

A program to do the "bookkeeping" involved in solving cryptogram puzzles
(single-letter-substitution ciphers).
Not to be confused with the enciphering/deciphering program  CRYPT.

Runs on a DataDisc but can be used on other terminals.
Will create your own file of cryptograms.
Sample cryptograms available.

To use type R CRYPTO, to exit type QUIT or EXIT

Type READ CRYPTO for further details.

There is no PRUNE.DAT listing.

There is no HELP file.

Written by DON.
USEFUL SUBROUTINES
	OUTDPY	SAIL callable subroutine to display text

	title outdpy
	entry outdpy
	extern outstr,corget,correl

comment ⊗ (taken from OUTDPY.FAI[S,PMF]

This subroutine was written for dd's by pmf.  The iii and dm routines, along with
the column-positioning, was added by don on 4-May-78.

Outdpy is a sail-callable procedure for displaying text on datadiscs, iiis,
and datamedias.  The declaration within the sail program is:

require "outdpy.rel[s,pmf]" library;
procedure outdpy (string message; integer string_pos, pp_pos);

where:	message		is the text to be displayed
	string_pos	is the position where the first char should go (see below)
	pp_pos		is the position for the page printer (see below)

Lines which are partially occupied by the message will be cleared to right
margin; this will not  be the case  for blank lines in  the text.  To  get
them truly blank, include at least one space character.

If the terminal is  not a display, the  sail function "outstr" is  invoked
instead.

The value of string_pos should  be x,,y (i.e. (x lsh  18)+y) where x is  a
column and y is a  line.  Columns are numbered from  1 to n (n depends  on
the display type); a  column of zero  will put text  at the standard  left
margin (column 2 on dd's  and iii's, column 1  on dm's); a column  greater
than the right margin (99 is  big enough regardless of the terminal  type)
will put text  at the column  used for  "Page xx" by  the "copy"  program.
Only the first  line of text  starts at the  specified column;  subsequent
lines, if any, will start at  the standard left margin.  Meanwhile,  lines
are numbered from  0 (system wholine)  through m (again  depending on  the
terminal).  Line 3 is  the standard "first  line", 2 is  the line used  by
"copy" for page  numbers, etc.   Finally, if string_pos  is negative,  the
screen is erased  before the display  is done, and  the absolute value  is
used to determine the x/y coordinates for the text.

The value of pp_pos  should be a  line number, where  0 again denotes  the
system wholine.  If pp_pos is negative, the page printer is positioned  to
leave |pp_pos| blank lines  between the last line  of the message and  the
first line of the printer.  The size of the page printer is set to  extend
as near as  possible to the  bottom of  the screen, with  the glitch  size
being the default for the particular terminal (4 for dd's, 2 for iii's,  3
for dm's) unless this would result in  only 1 glitch per screen, in  which
case a smaller glitch is used.

⊗;
UOSORTED
	BUZZ	Terminal test					1967

Programmer:	JOE

Say "R BUZZ<cr>" then "<character><cr>" and it will type <character> many times.
Say "<character>=" and it types the octal code for <character>.  Either kind
of command can be repeated.
	DOCTOR	Eliza						1968

Programmer:	Joe Weizenbaum (MIT)
Documentation:	Numerous idiotic articles

Gives non-directive couselling.  Say "R DOCTOR<cr>" and it will say
"SPEAK UP!".  Thereafter, pretend that you are lying on a Psychiatrist's
couch and type whatever you like (assuming that you can type while lying
down) followed by TWO carriage returns.  Everything must be in UPPER CASE.
Multiple-line statements or questions are OK.
	P2P	Paper tape puncher			1973?

Programmer:	RPH
Documentation:	P2P.RPH[UP,DOC]

P2P is a program for reading, punching, and comparing paper tapes.  As an
added feature it will take any tape that can be loaded with the 20 loader
and punch a readin mode 20 loader at the beginning of it.  This allows you
to use the readin switch on the PDP-10 (the one on the PDP-6 doesn't do
the same thing).  Also it will punch a test pattern so that you may see if
the punch is dropping any bits.

	A2E	ASCII to EBCDIC code conversion			Jan. 1973

Programmer:	Kevin Kay
Documentation:	A2E.KK[S,DOC]

A2E is a program for transferring files from the Stanford AI PDP-10 to an
IBM 360 Series machines. It will transfer files written in ASCII from the
PDP-10 to the System/360 and EBCDIC files from the System/360 to the PDP-10 .
	SHUFFL	Operating System test program

Programmer:	?

Used to test memory management in the timesharing system.  Say
R SHUFFL <core>
and this program will compute indefinitely, alternating its core size
between <core> pages and 2 pages.  This is intended to drive the operating
system crazy.
	CHACK & AMOEBA	III display hacks			1969

Programmer:	JAM

Log in on a III display, smoke a little grass, type "R CHACK" or "R AMOEBA"
and be dazzled.
	BILLBD	Billboard printer				Nov. 1966

Programmer:	Aram Grayson
Source file:	lost (written in Fortran)

Prints BIG on the line printer (one character per page).  Upper case only--
no digits or punctuation.

Say "R BILLBD<cr>" then type the message (remember, UPPER CASE) followed by
end-of-file (αβLF).